Sep*_*ram 8 c++ copy-constructor default-constructor
我们知道,如果声明了任何构造函数(包含复制构造函数),则不会隐式创建默认构造函数(不带参数的构造函数).使用默认复制构造函数(执行对象的浅层复制的构造函数)会发生同样的情况吗?此外,析构函数的存在是否会对此产生影响?
这里的答案是正确的但不完整.它们适用于C++ 98和C++ 03.在C++ 11中,如果已声明移动构造函数或移动赋值运算符,则不会获得复制构造函数.此外,如果已声明了复制赋值运算符或析构函数,则不推荐隐式生成复制构造函数.12.8 [class.copy]:
如果类定义没有显式声明复制构造函数,则没有用户声明的移动构造函数,并且没有用户声明的移动赋值运算符,复制构造函数被隐式声明为默认值(8.4.2).如果类具有用户声明的副本赋值运算符或用户声明的析构函数,则不推荐使用此类隐式声明.
归档时间: |
|
查看次数: |
1570 次 |
最近记录: |