作为一名新手C++程序员,有些结构对我来说仍然非常模糊,其中之一就是const
.你可以在很多地方使用它,并且有很多不同的效果,初学者几乎不可能活着出来.一些C++专家会永远解释各种用途以及是否和/或为什么不使用它们?
我相信,inline
已经过时,因为我在这里读到:
无论你如何指定一个函数
inline
,它都是一个允许编译器忽略的请求:编译器可能内联扩展一些,全部或没有你调用指定函数的地方inline
.
然而,Angew似乎理解我不知道的事情.在这个问题中他和我来回走了很多,关于是否inline
仍然有用.
这个问题不是一个问题:
inline
或在哪里inline
仍可用于向编译器提示inline
功能:我应该何时为函数/方法编写关键字'inline'?.inline
运行代码:强制其他翻译单元中的内联函数请记住,编译器可以随意使用inline
,因此inline
在那里没有用处:可以inline
用来强制而不是建议编译代码的更改?
我正在阅读 Bjarne 的A Tour of C++ ,他在第1.6 节 Constants中有这个例子。
constexpr int dmv = 17; // dmv is a named constant
int var = 17; // var is not a constant
const double sqv = sqrt(var); // sqv is a named constant, possibly computed at run time
Run Code Online (Sandbox Code Playgroud)
我的问题与他对最后一行的评论有关
...可能在运行时计算
从代码来看,值var
,数字文字17
不会在代码中的任何地方改变。为什么编译器不在编译时评估它?
我在查看时看到了这个问题的答案const
,它用于语义,对于程序员而不是编译器来说更有意义。但我的主要问题是:
编译器可以不对此进行优化吗?如果不是,是因为要求编译器进行优化的要求太多了吗?
编辑:我想优化的编译器部分是计算,sqv
因为var
程序中的任何地方都没有改变。