我最近在阅读 Stroustrups The C++ Programming Language,在第 9 章有关 Linkage 的部分中,我看到了以下段落:
"In C and older C++ programs, the keyword static is (confusingly) used to mean "use internal linkage". Don't use static except inside functions and classes."
问题是进一步阅读,作者没有详细说明为什么这是不好的做法。我不时在我的代码中使用静态函数,通常是为了一些在编译单元之外不需要的简单计算,但我从来没有意识到这是不受欢迎的,而且我也不清楚为什么它不好。任何人都可以为我阐明这一点吗?
最佳答案
我认为这个想法不是反对内部链接,而是为了避免与 static
的新含义混淆:static
有太多含义(声明东西具有内部链接,定义具有静态存储持续时间的局部变量,标记类的非实例成员),因此避免使用不太直观的方法是一件好事。
因此,C++98 标准提供了另一种声明带有内部链接的内容的方法:unnamed namespaces , 并弃用 static
“在命名空间范围内声明对象时”。
C++11 标准取消了这个弃用(并且还以某种方式改变了未命名命名空间的语义,实际上并不需要内部链接),所以它现在真的是一个风格问题。
关于c++ - 为什么我们应该只在类或函数 (C++) 中使用 'static'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11298196/