1. 对于单纯的常量,最好以const对象或者enums替代#define
对于形似函数的宏,最好用inline替代#define
2. 编译器可以暗自为class创建default构造函数、copy构造函数、copy assignment操作符,以及析构函数。
3. 多态基类应该声明一个virtual析构函数,如果不是作为基类或者多态用,则不应该声明virtual析构函数
4. 赋值函数应该确保复制“对象内的所有成员变量”及“所有的基类成分”
5. 赋值函数需要考虑自我赋值的异常情况
Widget& Widget::operator=(const Widget& rhs)
{
if(this == &rhs) return *this; //考虑自我赋值异常情况
.....
return *this;
}