1、 关于宏、常量和模板名要全部大小,用下划线隔开;
2、 指针标识符名以p开头;
3、 i_ 类内数据成员; c_ 类内静态数据成员; g_全局变量; f_ 文件作用域变量
4、 函数中,用lhs做左值参数的名字,用rhs做右值参数的名字
5、少用浮点数除非必须
6、用typedef简化程序中的复杂语法,用enum取代(一组相关)的常量
7、(尽量)用引用取代指针
8、函数无参数一定要用void标注
9、对于非内置类型参数应传递引用(首选)或指针,提高效率,防止对象切割
10、返回指针类型的函数应该用NULL表示失败
11、当函数返回引用或指针时,用文字描述其有效期
12、禁止成员函数返回成员(可读写)的引用或指针
13、不要在类定义时提供成员函数体,函数声明时定义参数的缺省值
14、当类型差异不影响类的行为时用模板,否则用继承
15、纯虚函数是可以有函数体的。如果派生类要使用该缺省实现,必须在自己的函数体中显示调用
16、绝不要重新定义(继承来的)非虚函数
17、记住给字符串结束符申请空间,如:pName = new char[strLen + 1];
18、声明后就初始化强于使用前就初始化,初始化要彻底,尽量使用初始化列表,初始化列表要按成员声明顺序初始化它们
19、关于构造函数、析构函数、赋值函数、相等或不等函数的格式:
//拷贝构造函数
MyClass_T::MyClass_T(const MyClass_T&);
//析构函数
MyClass::~MyClass_T(void);
//赋值函数:尽量用常量参数
MyClass_T& MyClass_T::operator=(const MyClass_T& rhs);
//相等函数
bool operator==(const MyClass_T& lhs, const MyClass_T& rhs);
//不等函数
bool operator!=(const MyClass_T& lhs, const MyClass_T& rhs);
20、常量修饰符:
const char* p = "hello";指针不是常量,指针指向的是常量.
char* const p = "hello";指针是常量,指针指向的不是常量