21xrx.com
2025-04-10 21:26:24 Thursday
文章检索 我的文章 写文章
C++构造函数的分类
2023-07-04 13:53:19 深夜i     13     0
默认构造函数 拷贝构造函数 参数构造函数 析构函数 转换构造函数

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++中构造函数的分类。我们可以根据自己的需求来定义不同类型的构造函数,以初始化对象的成员变量。

  
  

评论区

请求出错了