const与efficiency&design

来源:互联网 发布:釜山行影评知乎 编辑:程序博客网 时间:2024/05/18 20:05

 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来说意味着更加明确的设计意图和防御,和潜在的略微优化;