但并不从包含函数声明的接口派生_17、特种成员函数的生存机制

185611a2cd8f71a9618a5aa9885b0656.png

特种成员函数

class widget{ 
public: 
widget(); // 默认构造函数 
~widget(); // 默认析构函数 
widget(const widget&) // 复制构造函数 
widget& operator=(const widget&); // 复制赋值运算符 
// C++11 
widget(widget&&); // 移动构造函数 
widget & operator(widget &&); // 复制构造函数 
}; 

C++98有四种特种成员函数:默认构造函数、复制构造函数、析构函数、复制赋值运算符。

C++11加入了两种新的特种成员函数:移动构造函数、移动赋值运算符。

特种成员函数的机制

默认构造函数

仅当类中不包含用户声明的构造函数时才生成

析构函数

  • 析构函数默认为noexcept
  • 基类的析构函数为虚时,派生类的析构函数为虚

复制构造函数

  • 按照成员进行非静态复制成员的复制构造
  • 不包含用户声明的复制构构造函数时才生成
  • 声明移动操作时复制构造函数将被删除

复制赋值运算符

  • 按照成员进行非静态成员的复制赋值
  • 不包含用户声明的复制赋值运算符时才生成
  • 声明移动操作时复制赋值运算符将被删除

移动构造函数和移动赋值运算符

  • 按成员进行非静态成员的移动操作
  • 仅当用户声明的操作不存在时才生成
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值