(一) 了解C++ 默默编写并调用哪些函数 (只有当被调用到,才会默认生成,否则是没有的)
default构造函数(当没有显示的提供任何构造函数时才会有)
default析构函数
copy构造函数
copy assign构造函数
(二) 若不想使用编译器自动生成的函数,就该明确拒绝
将相应的函数声明为private就是
(三) 为多态基类声明virtual 析构函数
防止当用基类指针指向子类时,delete该指针,调用的是基类的析构函数,造成子类部分内存可能没析构到.另外,注意添加virtutal会增加类空间体积,因为需要一个vptr指向虚函数表的指针.
(四) 别让异常逃离析构函数
因为在析构的过程中抛出异常,会导致不明确行为发生.看书到这,一兄弟突然发来端午祝福短信,一时间往事涌上心头,遂产出:
一别数载往事忆,
天南地北皆兄弟;
闻兄七十千克余,
思见甚急 甚急.
(五) 绝不在构造和析构过程中调用virtual函数
因为构造过程中,该对象还未形成,如果有些间调用virtual函数,肯定是调用的基类版本,同理在析构函数中..
(六) 令operator = 返回一个reference to *this
这个不是强制的,但所有内置和标准程序库提供的类型如string, vetor等都遵守这条,随众吧.
(七) 在operator =中处理”自我赋值”
添加证同测试
if(this ==&rhs) return *this;
(八) 复制对象时勿忘其每一个成分
1. 确保复制所有local成员变量;
2. 调用所有base classes内的适应的copying函数