有四个基本隐式声明的特殊函数。
- 默认构造函数
- 默认析构函数
- 默认赋值运算符
- 默认的成员复制操作符
问题:
如果其中任何一个由用户定义,[例如:Destructor] 其余三个函数将不会被声明。那是正确的吗? 或者 只适用于默认构造函数,复制构造函数?
最佳答案
如果您声明自己的任何 类型的构造函数(包括复制构造函数),则不再隐式声明默认构造函数。其余的是(除非您自己声明了其中之一)。
但是,如果您发现自己声明了 2、3 或 4 中的任何一个,那么您很可能应该声明另外两个,即使编译器隐式声明了它们。这被称为 rule of three .
编辑 在 C++11 中也有隐式声明的移动复制构造函数和一个移动赋值运算符,所以三的规则变成五法则。
关于c++ - 隐式声明的特殊成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11671282/