C++笔记 第三课 进化后的const分析---狄泰学院

https://blog.csdn.net/weixin_42187898/article/details/83116692

 

进化之后的const分析
	1、C语言中的 const
		const 修饰的变量是只读的,本质上还是变量。

		const 修饰的局部变量是在栈上面分配的。

		const 修饰的全局变量是再只读存储区分配的。

		const 只在编译期有用,在运行期是没有用的。

		const 修饰的变量不是真的常量,它只是告诉编译器在编译期间,const 修饰的变量不能出现在等号的左边。

		const 使得变量只有只读属性。

		const 将具有全局生命周期的变量放到了只读存储区。

		const 不是真正意义上面的常量,enum 可以,枚举。
	2、C++中的 const
		C++在C的基础上对 const 进行了进化处理。

		当碰到 const 时,在符号表中放入变量。-->> 关于符号表在:
											https://blog.csdn.net/m0_37141848/article/details/103407529有详细的描述
		当编译过程中遇到常量直接用符号表中的替换。

		在编译过程中如果发生了下列的情况应该给常量分配空间:
			对 const 常量使用了 extern 关键字。
			对 const 使用了 & 运算符。
			注意:虽然C++编译器为const常量分配了内存空间,但是不会使用其存储空间的值。
	3、再总结:
		C语言中的 const 变量是只读变量,会分配存储空间。
		C++中的 const 常量(由只读变量变为真正的变量)才有可能分配空间。
			-->> 当 const 常量为全局常量,并且需要在其他文件中使用的时候。使用&操作符对 const 常量取地址。
		C++中对 const 常量类似于宏定义,但又有点不同:
			const 常量由编译器处理,编译器对 const 常量进行编译器检查和类型检查。
			宏定义由预处理器处理,单纯的文本替换。
	4、最终的小结:
		与C语言不同,C++中的 const 不是 只读变量。
		C++中的 const 是一个真正意义上的常量。
		C++编译器可能会为 const 常量分配空间。
		C++完全兼容C语言中 const 常量的语法特性。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值