c++基础知识12——const 生成只读变量

只读变量
c++语言中只有字面量初始化的const常量才能进入符号表中。
当出现编译时不能确定const常量的时,const常量不能进入符号表中。而只是作为一个只读变量(当然,这个变量不能作为左值使用)。如下两种即为不确定情况:
1.用其它变量初始化const常量
2.被volatile修饰的const常量

举例1.

char a = 'x';
const char& b1 = a;	//这里定义一个const引用b1
const int& b2 = a;	//这里定义一个const引用b2,注意这里会默认将char型a转换为int型
a = 'y';	//这里修改后, a b1均为'y',但是b2仍为'x'。
		//因为当类型不同,需要类型转换时,会生成一个新的只读变量。
		//所以这里修改的只是a 和 b1引用,而b2这个只读变量没变。

举例2.

int a = 1;
const int b = a;	//这里const常量b被其它变量a初始化,上面说了,这里b只是一个只读变量
int* p = const_cast<int*>(&b);	//取消只读属性
*p = 5; //这里修改后a==1, b==*p==5

举例3.

volatile const int a = 1;	//这里定义了volatile修饰的const常量a,上面说了,这里a只是一个只读变量
int* b = const_cast<int*>(&a);	//这里强制转换取消只读属性
b = 5;	//这里修改后, a b均为5
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值