Item 12-复制对象时忽忘其每一个成分(Copy all parts of an object)
设计良好之面向对象系统(OO-system)会将对象的内部封装起来,只留两个函数负责将对象拷贝(复制),那便是带着适切名称的copy构造函数和copy assignment操作符,称它们为copying函数。
如果是"编译器生成版本"的行为:将被拷对象的所有成员变量都做一份拷贝。
如果是自己...
分类:
编程语言 时间:
2016-08-10 21:10:20
阅读次数:
238
自己编写copying函数时,必须手动实现每个成员的拷贝。
分类:
其他好文 时间:
2015-05-30 07:01:25
阅读次数:
311
考虑一个class用来表示顾客,我们自己实现copying函数而非由编译器提供(注:编译器对于copying函数的默认实现就是将对象的所有成员变量都复制一份): 1 #include 2 3 using namespace std; 4 5 void logCall(const string&...
分类:
其他好文 时间:
2015-05-26 17:48:31
阅读次数:
277
如果一个对象是独一无二的,那么我们就不应该提供copy构造函数和copy assignment操作符函数(二者统称为copying函数)。但是即使我们不定义它们,编译器也会在别人调用它们时默认提供,如何拒绝编译器的这种行为呢?由于编译器自动生成的函数都是public的,因此你可以提供private的...
分类:
其他好文 时间:
2015-05-25 09:51:29
阅读次数:
280
Copying函数应该确保复制“对象内的所有成员变量”及“所有base class成分”。不要尝试以某个copying函数实现另一个copying函数。应该将共同机能放进第三个函数中,并由两个coping函数共同调用。如果你发现你的copy构造函数和copy assignment操作符有相近的代码,...
分类:
编程语言 时间:
2015-01-30 14:49:52
阅读次数:
215
条款10到条款12讲述了赋值操作符、赋值构造函数、以及基类派生类之间调用这些函数时应该注意什么?...
分类:
编程语言 时间:
2015-01-11 20:25:00
阅读次数:
262
条款12 : 复制对象时不要忘记其每一个成分
编写一个类用来表现顾客,其中手动写出copying函数使得外界对它们的调用记录会被logged下来:
#include
#include
using namespace std;
void logCall(const string funcName)
{
cout<<funcName<<endl;
}
class Cu...
分类:
编程语言 时间:
2014-11-15 15:34:02
阅读次数:
255
请记住:(1)Copying函数应该确保复制“对象内的所有的成员变量”及“所有base class成分”。(2)不要尝试以某个copying函数实现另一个copying函数。应该将共同机能放在第三个函数中,并有两个copying函数共同调用。
分类:
编程语言 时间:
2014-06-29 20:18:48
阅读次数:
236