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