aia*_*iao 29 c++ default-constructor implicits
这应该是一个微不足道的问题,但我无法在stackoverflow上明确找到它.
如果用户不提供,将隐式定义以下内容.
但是我已经读过某个地方(我现在似乎无法找到),有些情况下编译器不会隐式实现它们.
这些条件是什么?
Arm*_*yan 51
X()如果出现以下情况,则不会隐式生成默认构造函数(例如):
const对象或没有或无法访问的默认构造函数的类)X() = delete;X(const X&)如果出现以下情况,则不会隐式生成复制构造函数(例如):
X构造函数X,X&或者const X&)X(const X&) = delete;X& operator=(const X&)如果出现以下情况,则不会隐式生成复制分配运算符(例如):
X的operator=服用X,X&或const X&)const对象或没有或无法访问赋值运算符的类)X& operator=(const X&) = delete;~X()如果出现以下情况,则不会隐式生成析构函数(例如):
~X() = delete;X(X&&)如果出现以下情况,则不会隐式生成 Move Constructor(C++ 11)(例如)
X,一个构造函数X&&)const有一个无法移动构造的数据成员(是,是引用,还是已删除,不可访问或模糊的移动构造函数)X(X&&) = delete;X& operator=(X&&)如果出现以下情况,则不会隐式生成移动分配运算符(C++ 11)(例如)
X,一个operator=采取X&&)const,是引用,还是已删除,不可访问或模糊的移动赋值运算符)X& operator=(X&&) = delete;| 归档时间: |
|
| 查看次数: |
6720 次 |
| 最近记录: |