在Orbit 澄清 Lightness Races 之后,我缩小了我的帖子范围。
看完这篇文章:零法则,
我明白了最多,但我仍然想解决我遇到的一些不清楚的问题:
1.看这句话:
如果类 X 的定义没有显式声明移动构造函数,则当且仅当以下情况时才会隐式声明为默认构造函数:
X 没有用户声明的复制构造函数,并且
X 没有用户声明的复制赋值运算符,
X 没有用户声明的移动赋值运算符,
X 没有用户声明的析构函数,并且
移动构造函数不会被隐式定义为已删除。
应该所有 5 个语句共存(共享“和”关系)还是仅其中一些(共享“或”关系)?
2. “用户声明的”复制构造函数\复制赋值操作符...是什么意思?
是在 .h 文件中声明它(上面的列表中的任何一个),但没有实现它被认为是用户声明的?
是在 .h 文件中声明它(上面列表中的任何一个)并指定“ =deleted ”或“ =default ”被认为是用户声明的?
是在 .h 文件中声明它(上面列表中的任何一个),其中包含空手镯 {},被认为是用户声明的?
尊敬,
易泰