条款12:复制对象时勿忘其每一个成分
Copy all parts of an object.
如果为类声明了自己的 copying 函数,编译器便不会在创建默认函数,此时如果 copying 函数中存在错误,编译器也将无法发现。
copying 函数的常见错误在于,如果类中新添加了成员变量,而在 copying 函数中遗忘了对新的成员变量进行复制的操作,这种问题称为局部拷贝(partial copy)。
所以在编写一个 copying 函数时,需要确保(1)复制了所有 local 成员便令(2)调用所有 base class 内的适当 copying 函数。
copy assignment 操作符合 copy 构造函数很像,但:
令 copy assignment 操作符调用 copy 构造函数是不合理的,因为它等于去试图构造一个已经存在的实例;
令 copy 构造函数去调用 copy assignment 操作符也是不合理的,因为它等于为一个还没有被构造出的实例进行赋值;
所以正确的做法是将相同的操作移到一个函数中,然后两者都去调用它。
Last updated
Was this helpful?