C / C ++静态const局部变量的目的

时间:2013-02-20 23:47:17

标签: c++ c static

在C和C ++中,制作本地const变量static有什么好处?假设初始化不使用其他变量,保持调用之间的值与每次调用设置相同的常量值之间是否有任何区别?

有效的C编译器是否会忽略static

在C ++中,它避免了调用之间的构造/破坏,但是还有其他好处吗?

2 个答案:

答案 0 :(得分:8)

如果你有类似的东西,它不占用堆栈空间可能是一个好处:

static const double table[fairly_large_number] = { .... };

显然,构造成本也足够大,如果函数被调用很多,那么只需构造一次对象就有很好的价值。

答案 1 :(得分:2)

是的,这是巨大的:语义的好处。

当您放置const时,您不仅仅意味着编译器不应该让您修改变量。你对以后阅读代码的人做了更大胆的陈述:这不会改变。甚至没有副作用,你把这个变量作为指向另一个函数的指针。

此外,编译器可以利用这些新信息并在某些情况下对其进行优化,具体取决于您正在处理的具体类型。

(很明显,我在这里讲的是关于constnon-const的对比,而不是staticnon-static的对比。)

修改This SO answer也非常有用。