C++深度解析 经典问题解析 const和引用,只读变量和常量(11)【详细】
对于const的疑问
const常量的判别准则:
- 只有用字面量初始化的const常量才会进入符号表,是真正意义上的常量
- 使用其他变量初始化的const常量仍然是只读变量
- 被volatile修饰(易变的,可能发生变化的)的const常量不会进入符号表,volatile const同时修饰的标识符,得到的是只读变量。
- const引用的类型与初始化变量的类型,相同:初始化变量成为只读变量,不同:生成一个新的只读变量
只读变量和常量的区别:
归纳起来:编译期间,不能直接确定初始值的const标识符,都是只读变量。
//用字面量1初始化x,x是真正意义上的常量,并且编译器会为常量x分配4个字节的空间,x会进入了符号表
const int x = 1;
//因为使用变量初始化,所以引用rx代表一个只读变量。编译器会为常量x分配4个字节的空间,rx代表这4个字节空间的别名
const int& rx = x; //引用代表变量的别名(也就是说一段内存的别名)
引用代表变量的别名,变量的别名代表一段内存空间的别名。
const引用:
const引用使得存在的变量拥有只读属性。
把const引用初始化为