会员变量是否具有外部链接

Do member variables have external linkage?

本文关键字:外部 链接 是否 变量      更新时间:2023-10-16

我已经阅读了这篇文章,它说

类的名称,其成员功能,静态数据成员(const 是否),嵌套的类和枚举和功能首先 与朋友声明一起介绍班上的主体

默认情况下具有外部链接..但是,在班级主体内声明的变量未指定静态呢?此外,它以

开始

在名称空间范围上声明的以下任何名称都具有外部 链接

,但是类范围是否被认为是命名空间范围?我的意思是类范围和名称空间范围是不同的,那么为什么它们首先要说以下内容适用于在命名空间范围内声明的上述声明呢?我的意思是,例如,在类范围中声明了成员功能,他们提到它们,好像是名称空间范围?

以下示例:

class C
{
public:
    int n;
};
C e;
namespace { C i; }

e具有外部链接,i内部。现在谈论n的链接会有多大意义?如果有的话,您可以考虑n继承包含对象的链接,因此e.n具有外部,i.n内部链接–为了更好地理解,我不认为这是正确的措辞...

标准报价:

当它可能表示相同的对象,参考,函数,类型,模板,名称空间或值为声明中引入的名称的名称时,

据说具有链接。

翻译为普通英语:

如果您可以在另一个范围中重新列出它,则具有链接。否则,不。

您不能在另一个范围中重新列出非静态类数据成员,因此它没有链接。