const与efficiency&design

 const意味着不能修改;

我们的潜意识里面要深深刻着:const是
1,design的意图
2,防御式编程,更安全

而const_cast则是对于初始设计的一种破坏,是程序完美性的污染者,hack!

除此之外,可以考虑使用const带来的optimization:
1,compile time:在effect c++中所介绍的,用const来代替#define,也就是预编译时间
而且直接声明一个POD变量为const也有可能促使compiler预处理的时候把变量优化掉;
2,runtime memory:
read-only memory读取的时候据说会比ram快一些,在wikipedia等地方并没有见到确切的说法;
如果真的如此的话,那么compiler在声明POD变量的情况下可能会把变量放到read-only memory中,
从而使得程序运行可能加快;

其他情况下,cosnt对于compiler来说会阻止coder来改变const所修饰的值,但在const的管辖范围
之外和const_cast的存在的情况下,变量与内存都可能被修改,所以const对于编译器来说除非非常的显而易见的情况,否则并不意味着真的const,compiler自己也无从下手去做什么,但是至少这是对于compiler的一个提示,一个更加准确的修饰,更加aggressive的compiler可以在这些方面有所作为,

而且,const带来更加安全,使得程序开发效率提高,那么我们在单位时间内有更多的时间去profile和optimize,这也是一种优化,isn't?

所以const对于coder来说意味着更加明确的设计意图和防御,和潜在的略微优化;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值