基本上隐式声明了四个特殊函数。
- 默认构造函数
- 默认析构函数
- 默认赋值运算符
- 默认成员复制运算符
问题:
如果其中任何一个是由用户定义的,[例如:析构函数]其余三个函数将不会被声明。这是正确的吗?
或者
它只适用于默认构造函数,而复制构造函数?
如果你声明自己的构造函数,any类型(包括复制构造函数),然后默认构造函数不再隐式声明。其余的都是(除非您自己声明了其中之一)。
但是,如果您发现自己声明了 2、3 或 4 中的任何一个,那么您很可能应该声明其他两个,即使编译器隐式声明了它们。这被称为三法则 http://en.wikipedia.org/wiki/Rule_of_three_%28C%2B%2B_programming%29.
Edit在 C++11 中也隐式声明了移动复制构造函数 and a 移动赋值运算符,所以三法则就变成了五法则。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)