改善程序与设计的N个做法
经验往往包含着珍贵的学问。
1、尽量用const、enum、inline替换#define
对于简单常量,使用 const 代替宏定义,其优点:const 常量能够出现在符号表中,方便调试。宏定义因为进行的宏替换,有时候会造成代码冗余,const 常量能够很好的避免这个问题。const 常量可以作为类属成员,#define 则毫无封装性。整型族类属常量可以在类中声明时直接初始化。
enum 也可以作为整型常量使用,并且无法取得其地址。
使用内联函数代替宏定义的函数将会在不损失效率的情况下降低发生错误的可能性
2、尽可能的使用const
(1)const允许你指定一个语义约束,即你可以指定一个不能被改动的对象,交由编译器具体执行,使得这条约束不被违反。
char name[] = "marry";
const char* p = name; //指针所指的数据是常量,不能通过解引用修改数值,但可以改变指向
char * const p = name; //指针是常量,指向不可变,可通过解引用修改指针所指向的数据
const char* const p = name; //指针和数据都是常量,都不可更改
(2)const修饰函数参数时,传递过来的参数在函数体内不可以改变
void fun(const int age)
{
age = 6; //编译出错
}
(3)除了重载操作符外,一般不要将返回值类型定义为对某个对象的const引用。
(4)const成员函数
作用是确认那个函数可以修改对象内容,哪个函数不能修改对象内容;另外,const成员函数使操作const对象成为可能。