1. 无参构造函数:创建类对象
  2. 拷贝构造函数:拷贝类对象
    *即拷贝另一个对象给该对象,如string str1(str2)
    定义方法
    类名(const 类名 & c)*
  3. 移动构造函数:拷贝类对象
    *对于原对象,拷贝构造之后还拥有资源,移动构造之后不再拥有资源
    Mystring(Mystring&& other);*
  4. 拷贝赋值函数:类对象赋值
  5. 移动赋值函数:类对象赋值
    析构函数:销毁类对象

在 C++ 语法规则中,一旦程序员实现了这些函数的自定义版本,则编译器不会再为该类自动生成默认版本。

有时程序员会忘记上面提到的规则,最常见的是声明了带参数的构造,如果还需要无参构造函数,这时候必须定义出不带参数的版本。
使用 =defaut 指定的默认函数和类提供的默认函数是等价的


弃置函数:=delete

使这个函数无法调用,比如不想让别人使用拷贝构造

请注意,删除的函数是隐式内联的,这一点非常重要。删除的函数定义必须是函数的首次声明。

class C {
public:
         C(C& a) = delete;
};

但是以下尝试声明删除函数的方法会产生错误:// incorrect syntax of declaring a member function as deleted 
class C  { 
public: 
    C(); 
}; 
  
// Error, the deleted definition of function C must be the first declaration of the function. 
C::C() = delete; 
Last modification:March 23, 2023
如果觉得我的文章对你有用,请随意赞赏