const int a;//a是常性整数
int const a;//a是常性整数
const int *a;//a 是一个指向常整型数的指针(整型数是不可修改的,但指针可以)
int * const a;// 是一个指向整型数的常指针(指针指向的整型数是可以修改的,但指针是不可修改的)就近原则
int const * a const;// a 是一个指向常整型数的常指针(指针指向的整型数是不可修改的,同时指针也是不可修改的)
使用const原因:
1). 关键字 const 的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个
参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下
的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用 const 的程序员很少会留
下的垃圾让别人来清理的。)
2). 通过给优化器一些附加的信息,使用关键字 const 也许能产生更紧凑的代码。
3). 合理地使用关键字 const 可以使编译器很自然地保护那些不希望被改变的参数,防
止其被无意的代码修改。简而言之,这样可以减少 bug 的出现。
注意事项:
(1)对于类的成员函数,若指定其为 const 类型,则表明其是一个常函数,不能修改类的成员变量;
(2)对于类的成员函数,有时候必须指定其返回值为 const 类型,以使得其返回值不为“左值”。
const 与 #define 有什么不同
1. const 常量有数据类型,而宏没有数据类型。编译器可以对 const 常
量进行类型检查,而对宏只进行字符替换没有类型检查。
2. 有些编译器可以对
const 常量进行调试,但不能对宏常量进行调试
3. const 可以用来
修饰函数参数、函数返回值,C++还可以用来修饰函数,定义类中某个成员函数为
常量函数