1.头文件中的防御式声明。例如编写complex.h 应该
在开头写 #ifndef __COMPLEX__ #define __COMPLEX__ 结尾 #endif
2.如果class中数据类型可能不同 ,则直接使用模板。具体做法在class定义前使用template,在class的body内使用T来代替类型明。
3.有些短小的函数可以在class中的body内直接定义。在body体内定义的函数默认编译成inline函数。具体是够编译成inline函数由编译器决定。
4.使用构造函数尽量使用初始化列表进行赋值,此种方式为构造函数独有。其他函数不可使用。
5.singleton模式下将构造函数放到private中。
6.不使用指针的class一般不需要重写析构函数。
7.不需要改变class的成员变量的内容函数应写为常量成员函数,例double real()const {};因为常量无法调用非常量成员函数。所以如果不加const则可能出现常量无法调用函数的现象。
8.函数的参数传递中尽量不使用值传递,使用引用传递,如果传递过去不希望更改参数则加const进行修饰。
9.如果可以的话函数的返回值也尽量使用引用,这样可以提高程序效率。(当返回的值是一个函数local变量时,则不可以返回引用,因为它会随着函数的结束而消失,比如对+号进行重载时,+为全局函数,起返回结果为一个临时变量,故其返回值不能用引用;而对+=进行重载时,其运算结果要储存进入左值中,故必须返回引用)
10.友元函数破坏了class的封装性,但是却可以提高程序的效率(友元函数可以直接调用class内的私有成员变量而不用通过访问函数进行访问从而提高执行效率)。相同class的各个object互为friend(友元函数)
11.对于<< >>操作符函数的重载必须写为全局函数,而不能写成成员函数。为了保证cout<<i<<y<<endl;为了保证这样的使用方式,故其返回值必须为引用,即ostream &,因为保证速度,返回不能为void,因为cout<<i运算后还要进行下一个运算,故返回值必须为ostream类。
网友评论