博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++对const做的升级
阅读量:7043 次
发布时间:2019-06-28

本文共 611 字,大约阅读时间需要 2 分钟。

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

你可能感兴趣的文章
ConfigParser
查看>>
CentOS系统启动
查看>>
浅尝 Windows Server 2016 —— Container 容器:概念
查看>>
我的友情链接
查看>>
MSBuild
查看>>
6.3 bash编程 字符测试
查看>>
配置管理小报091124:*** glibc detected *** double free or corruption (fasttop): 0x08b60068 ***
查看>>
配置管理小报101010:数据库修复方法。
查看>>
Linux安装配置apache
查看>>
PHP 调试利器 debug_print_backtrace
查看>>
SQL 结果集标识
查看>>
20分钟轻松制作移动网站
查看>>
java开发的基本算法
查看>>
用于Raspberry Pi 的Linux 操作系统已经可用
查看>>
[转]预编译指令#pragma的用法
查看>>
快速配置Maven到OSChina开源中国中央库
查看>>
业内人士驳《我为什么自建机房?》:看似省钱其实未必
查看>>
Zookeeper介绍(28)
查看>>
使用POI读写word docx文件【docx总结的不错】
查看>>
Tomcat Server.xml配置文件
查看>>