在 C 和 C++ 中,制作局部const
变量有什么好处static
?假设初始化不使用其他变量,在调用之间保留值和每次调用设置相同的常量值之间有什么区别吗?
一个有效的 C 编译器可以忽略static
?
在 C++ 中,它避免了调用之间的构造/破坏,但还有其他好处吗?
如果你有类似的东西,它不占用堆栈空间可能是一个好处:
static const double table[fairly_large_number] = { .... };
显然,构造成本也可能足够大,以至于如果函数被多次调用,那么只构造一次对象就很有价值。
是的,这是巨大的:语义上的好处。
当你放 时const
,你不仅仅意味着编译器不应该让你修改变量。您对以后阅读代码的人做出更大胆的声明:这永远不会改变。甚至没有副作用,您将此变量作为指向另一个函数的指针。
此外,编译器可以利用这些新信息并在某些情况下对其进行优化,具体取决于您正在处理的特定类型。
(要清楚,我在这里说的是const
vs. non-const
,而不是static
vs. non-static
。)
编辑:这个 SO 答案也非常有用。