c++ - 变量的可访问性

标签 c++ class static namespaces constants

你好,

我对变量的可访问性有一点疑问。

int i; //default the linkage is external
const int i; //default linkage is internal
extern int i; //explicitly assigning linkage as external



class a
    {
        int l;  //Default linkage is external
        void f() 
        {
          int k; //default linkage is external
        }
    }

这个link说 非 const 符号的默认链接是 extern,const 符号的默认链接是 static(内部)。

int i 是否可以在没有外部关键字的情况下在其他文件中访问? 类和函数中存在的变量怎么样?

如何访问匿名 namespace 中存在的函数以及它们之间有什么联系?

namespace //members of anonymous namespace
{
 class C{};
 int x;
 }

最佳答案

int i; 具有外部链接,并且位于普通命名空间中,因此可以从其他文件访问。他们必须在同一命名空间(在本例中为全局命名空间)中声明 extern int i; 才能访问它。

无法从其他文件访问未命名命名空间的成员 - 这就是命名空间的用途。尽管它们可以有外部链接,但它们的命名空间对于当前文件是唯一的,因此另一个文件中的相同声明将引用不同的东西,对于该文件是唯一的。

关于c++ - 变量的可访问性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3564569/

相关文章:

python - __str__ 来 self 自己的矩阵,python

c++ - 有没有更好的方法来初始化引用成员以引用同一个类中的另一个成员

c - 即使没有任何更改,makefile 也会重建静态库

python - C++ Array to Numpy with SWIG Problem with TypeError

c++ - 本地 C++ vector 的内存分配在哪里?

java - opencv 查找文本区域 block /检测文档布局

c++ - 如何在C++中确定一个数的十位

c++ - 尝试使用继承定义类时编译器出错

node.js - 如何将 nodejs 编译为单个完全静态的二进制文件

java - 使用静态方法更改静态变量