C++常量const用法小结
const介绍
const 限定符,它把一个对象转换成一个常量。 在 C++ 中定义常量使用类型说明符,格式如下:
const <类型说明符> <常量名> = <常量值>;
用来修饰内置类型变量,自定义对象,成员函数,返回值,函数参数。
值替代
与使用#define一样,使用const必须把const定义放进头文件里,应该完全用const取代#define的值替代。
C++中的const默认为内部连接,也就是说,const仅在const被定义过的文件里才是可见的,而在连接时不能被其他编译单元看到。当定义一个常量(const)时,必须赋一个值给它,除非用extern作了清楚的说明:
extern const x;
C++编译器通常并不为const分配存储空间,相反它把这个定义保存在它的符号表里。当const被使用时,它在编译时会进行常量折叠。对于复杂的结构,这种情况下,编译器建立存储,这会阻止常量折叠。这就是const为什么必须默认内部连接,即连接仅在特别编译单元内的原因;否则,由于众多的const在多个cpp文件内分配存储,容易引起连接错误。因为const默认内部连接,所以连接程序不会跨过编译单元连接那些定义,因此不会有冲突。对于在大量场合使用的内部数据类型,包括常量表达式,编译器都能执行常量折叠。
安全性
如果用运行期间产生的值初始化一个变量而且知道在那个变量寿命期内它是不变的,用const限定该变量。
初始化必须发生在定义的地方,而且一旦初始化,其值不能改变。
const 修饰成员变量
#include<iostream>
using namespace std;
int main(){
const int x=123;
x=12; //错误 常量值不能修改
x++; //错误 常量值不能修改
int y=x; //正确
const int z=y; //正确
char