C++对const做的升级

C语言中,也有const,但是在C中,用const修饰的变量,并不是真正意义上的常量,而是一个只读变量,它的值事实上是可以改变的(当然,是局部变量)。
而C++对其进行了优化。在C++中,用const修饰的变量就是真正意义上的常量。因为,当你申请一个变量用const修饰时,在C++中,编译器并不会为这个变量申请一段内存空间,而是将该变量加入符号表中去,当程序中的其他地方需要用到这个变量时,直接将符号表中对应的常量值取出来即可。
C++优化后的const:
当碰见const声明时在符号表中放入常量
编译过程中若发现使用常量时则直接以符号表中的值替换
编译过程中,若发现以下情况则给对应的常量分配存储空间:
1.对const常量使用了extern
2.对const常量使用了&
注意:C++编译器虽然可能为const常量分配空间,但不会使用其存储空间中的值。
C语言中的const变量
C语言中const变量是只读变量,会分配存储空间
在C++中会分配存储空间的情况:
当const常量为全局并且需要在其他文件中使用
当使用&操作将对const常量取地址
C++中的const类似于宏定义
C++const常量与宏定义不同
const常量是由编译器处理
编译器对const常量进行类型检查和作用域检查
宏定义有预处理器单纯的文本替换

转载于:https://blog.51cto.com/chen0547/2046790

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值