1、头文件中尽量使用前置声明,减少依赖,减少头文件的修改引起重新编译的代码量,使用前置声明时可做下列操作:
1)声明某类的指针与引用的变量;
2)函数声明可使用某类做为返回类型;
3)可声明某类的静态变量,因为静态变量的定义在类定义之外。
2、头文件的包含顺序(减少依赖):
1)某实现文件相应头文件;
2)C 系统文件;
3)C++ 系统文件;
4)其他库的 .h 文件;
5)本项目内 .h 文件。
3、运算符重载
1)所有的一元运算符建议使用成员函数方式重载;
2)=, (), [], -> 必须使用成员函数方式重载,编译器强制运算符‘+’为成员函数;
3)+=、-=、/=、*=、^=、&=、|=、%=、>>=、<<= 建议使用成员函数方式重载;
4)其它二元运算符建议使用非成员函数方式重载,成员函数将限制左操作数的类型,非成员函数则可对左操作数进行类型转换;
5)., .*, :? 不可重载,‘.' 如果被重载,就不能用普通方式访问成员了,'.*‘ 与是同样的原因。
4、自动类型转换
1)构造函数转换与运算符转换,构造函数是目的类型实现转换代码,运算符转换则是源类型实现转换代码;
构造函数前加关键词 explicit 表明该构造函数将不会被自动类型转换使用。
运算符转换声明 operator 后跟想到转换到的类型:operator type() consta {}。
2)多种转换使用编译器产生一个不明指示的错误,以及一些隐藏行为。