Who*_*ami 2 c++
从根本上隐含地声明了四个特殊功能.
题:
如果用户定义了其中任何一个,[例如:析构函数]将不会声明这三个函数的其余部分.那是对的吗?或者它只适用于默认构造函数,并复制构造函数?
jua*_*nza 5
如果声明自己的任何类型的构造函数(包括复制构造函数),则不再隐式声明默认构造函数.其余的是(除非你自己宣布其中一个).
但是,如果您发现自己声明了2,3或4中的任何一个,那么即使编译器隐式声明它们,您也很可能应该声明其他两个.这被称为三规则.
在C++ 11中编辑还有隐式声明的移动复制构造函数和移动赋值运算符,因此三的规则成为五的规则.
Hac*_*ess 5
本页末尾有 Howard Hinnant 提供的信息丰富且简洁的表格https://howardhinnant.github.io/classdecl.html
归档时间:
13 年,4 月 前
查看次数:
575 次
最近记录: