c++ - C++ 中的常量和编译器优化

我已经阅读了关于 C++ 中 const 正确性的所有建议,并且它很重要(部分)因为它有助于编译器优化您的代码。我从未见过关于编译器如何使用这些信息来优化代码的很好的解释,即使是好书也没有继续解释幕后发生的事情。

例如,编译器如何优化声明为 const 的方法与未声明但应该声明的方法。当你引入可变变量时会发生什么?它们会影响 const 方法的这些优化吗?

最佳答案

我认为引入 const 关键字主要是为了程序语义的编译检查,而不是优化。

赫伯·萨特,在 GotW #81 article ,很好地解释了为什么编译器在通过 const 引用传递参数或声明 const 返回值时无法优化任何内容。原因是编译器无法确保引用的对象不会被更改,即使声明为 const :可以使用 const_cast,或者某些其他代码可以在同一对象上具有非常量引用。

不过,引用 Herb Sutter 的文章:

There is [only] one case where saying "const" can really mean something, and that is when objects are made const at the point they are defined. In that case, the compiler can often successfully put such "really const" objects into read-only memory[...].

本文还有很多内容,因此我鼓励您阅读它:之后您将对不断优化有更好的理解。

https://stackoverflow.com/questions/212237/

相关文章:

c++ - 私有(private)构造函数

c++ - 从构造函数的初始化列表中捕获异常

c++ - 使用 C++ 基类构造函数?

c++ - 字符串文字中的符号\0 是什么意思?

c++ - 为什么 C/C+ +'s "#pragma once"不是 ISO 标准?

c++ - 多行 DEFINE 指令?

c++ - std::vector 与 std::list 与 std::slist 的相对性能?

c++ - std::tuple get() 成员函数

c++ - 不允许指向不完整类类型的指针

c++ - 三向比较运算符与减法有何不同?