21xrx.com
2024-12-23 00:09:50 Monday
登录
文章检索 我的文章 写文章
C++构造函数的分类
2023-07-04 13:53:19 深夜i     --     --
默认构造函数 拷贝构造函数 参数构造函数 析构函数 转换构造函数

C++中的构造函数是用来初始化对象成员变量的特殊成员函数,它在创建对象时自动执行。

根据构造函数的形式和参数,可以将其分为以下几类:

1. 默认构造函数

如果我们没有定义一个类的构造函数,那么编译器将会自动生成一个默认构造函数,它不接收任何参数,不执行任何操作,只是给对象的成员变量赋默认值。例如,对于一个空的类,它的默认构造函数如下:


class EmptyClass {

public:

  EmptyClass() {}

};

2. 带参构造函数

带参构造函数是可以接收参数的构造函数,用于初始化对象成员变量的值。例如,对于一个带有成员变量x和y的类,它的带参构造函数如下:


class Point {

public:

  Point(int a, int b)

    x = a;

    y = b;

  

  int x;

  int y;

};

3. 拷贝构造函数

当用一个对象去初始化另一个对象时,会调用拷贝构造函数。该函数的参数为一个同一类型的对象的引用,用于将一个对象的成员变量的值复制给另一个对象。例如:


class Point {

public:

  Point(const Point& p)

    x = p.x;

    y = p.y;

  

  int x;

  int y;

};

4. 移动构造函数

移动构造函数是C++11中新增的一种构造函数,它的目的是通过“窃取”其他对象资源来优化对象的构造。该函数的参数为一个同一类型的“右值”引用,用于处理临时对象或被move()函数修饰的对象。例如:


class Array {

public:

  Array(Array&& other) : mData(other.mData), mSize(other.mSize)

    other.mSize = 0;

    other.mData = nullptr;

  

  int* mData;

  int mSize;

};

以上就是C++中构造函数的分类。我们可以根据自己的需求来定义不同类型的构造函数,以初始化对象的成员变量。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复