-
尽量用const和inline, 而不用#define
-
尽量用iostream而不用stdio.h
-
尽量用new和delete而不用malloc 和free
-
尽量使用C++风格的注释
-
对应的new和delete要采用相同的形式
-
析构函数里对指针成员调用delete
-
预先准备好内存不够的情况
-
写operator new和operator delete是要遵循常规
-
避免隐藏标准形式的new
-
如果写了operator new 就要同时写operator delete
-
为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符
-
尽量使用初始化而不要在构造函数里赋值
-
初始化列表中成员列出的顺序和他们在类中声明的顺序相同
-
确定基类有虚析构函数
-
让operator=返回*this 的引用
-
在operator=中对所有数据成员赋值
-
在operator=中检查给自己赋值的情况
-
争取使类的接口完整并且最小
-
分清成员函数,非成员函数和友元函数
-
避免public接口出现数据成员
-
尽可能使用const
-
尽量用“传引用”而不用“传值”
-
必须返回一个对象时,不要试图返回一个引用
-
在函数重载和设定参数缺省值间慎重选择
-
避免对指针和数字类型重载
-
当心潜在的二义性
-
如果不想使用隐式生成的函数就要显式地禁止它
-
划分全局名字空间
-
避免返回内部数据的句柄
-
避免这样的成员函数:其返回值是指向成员的非const指针或引用,但成员的访问级比这个函数要低
-
千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用。
-
尽可能地推迟变量的定义
-
明智地使用内联
-
将文件间的编译依赖性降至最低
-
使公有继承体现“是一个”的含义
-
区分接口继承和实现继承
-
决不要重新定义继承而来的非虚函数
-
决不要重新定义继承而来的缺省参数值
-
避免“向下转换”继承层次
-
通过分层来体现“有一个”或“用…来实现”
-
区分继承和模板
-
明智地使用私有继承
-
明智地使用多继承
-
说你想说的;理解你所说的
-
弄清C++在幕后为你所写、所调用的函数
-
宁可编译和链接时出错,也不要运行时出错
-
确保非局部静态对象在使用前被初始化
-
重视编译器警告
-
熟悉标准库
50.提高对C++的认识