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