|
|
1
1636
|
|
|
2
473
|
|
|
3
149
|
|
4
41
|
|
|
5
34
|
|
|
6
23
三法则的结果 是否存在用户声明的析构函数表示简单的成员级复制不太可能适用于类中的复制操作。反过来,这意味着如果一个类声明了一个析构函数,那么复制操作可能不应该自动生成,因为它们不会做正确的事情。在采用C++ 98时,这条推理线的意义没有得到充分的理解,因此在C++ 98中,用户声明的析构函数的存在对编译器产生复制操作的意愿没有影响。在C++ 11中,情况仍然如此,但仅仅因为限制生成复制操作的条件会破坏太多的遗留代码。
将复制构造函数和复制分配运算符声明为私有访问说明符。
在C++ 11中,您还可以声明复制构造函数和赋值操作符被删除。
|
|
|
7
14
许多现有的答案已经接触到复制构造函数、赋值运算符和析构函数。 然而,在后C++ 11中,移动语义的引入可能会扩展到3以上。 最近,Michael Claisse做了一个关于这个主题的演讲: http://channel9.msdn.com/events/CPP/C-PP-Con-2014/The-Canonical-Class |
|
8
9
C++中的三条规则是设计的基本原则和三个要求的发展,如果在下列成员函数中有一个明确的定义,那么程序员应该一起定义其他两个成员函数。也就是说,以下三个成员函数是必不可少的:析构函数、复制构造函数、复制赋值运算符。 C++中的复制构造函数是一种特殊的构造函数。它用于构建一个新对象,这个新对象相当于一个现有对象的副本。
|