我已经阅读了C++中关于常量正确性的所有建议,它很重要(部分),因为它有助于编译器优化您的代码。我从来没有见过关于编译器如何使用这些信息来优化代码的很好的解释,即使是好书也没有解释幕后发生的事情。
例如,编译器如何优化声明为const的方法,而不是声明为const但应该为const的方法。当引入可变变量时会发生什么?它们会影响const方法的这些优化吗?
发布于 2008-10-17 14:14:56
嗯。常量正确性更像是一种样式/错误检查,而不是一种优化。一个全能的优化编译器将跟踪变量的用法,并可以检测变量是否为有效常量。
更重要的是,编译器不能指望你告诉它真相--你可能会在一个它不知道的库函数中抛弃const。
所以,常量正确性是一个值得追求的目标,但它不会告诉编译器任何它自己不会弄明白的事情,假设一个好的优化编译器。
发布于 2008-10-17 14:15:28
如果优化器真的在const声明中投入了大量资源,我会感到惊讶。有很多代码最终会抛弃const,这将是一个非常不计后果的优化器,它依赖于程序员的声明来假设何时状态可能会发生变化。
发布于 2008-12-23 21:25:26
常量正确性作为文档也很有用。如果一个函数或参数被列为const,我就不需要担心我的代码中的值会发生变化(除非团队中的其他人非常顽皮)。不过,我不确定如果它没有内置到库中,它是否真的值得。
https://stackoverflow.com/questions/212237
复制相似问题