繁体   English   中英

成员变量是否有外部联系?

[英]Do member variables have external linkage?

我已经读过这篇文章

类的名称,它们的成员函数,静态数据成员(const或不是const),嵌套类和枚举,以及在类体内首先引入了友元声明的函数

默认情况下有外部链接..但是在类体内声明的未指定静态的变量怎么样? 而且,它开始于

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

,但是类范围被认为是命名空间范围吗? 我的意思是类范围和命名空间范围是不同的,那么为什么他们开始说下面的内容适用于在命名空间范围内声明的内容? 我的意思是,例如,成员函数是在类范围内声明的,他们提到它们就好像它是名称空间范围一样?

以下示例:

class C
{
public:
    int n;
};

C e;
namespace { C i; }

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

引用标准:

如果一个名称可能表示相同的对象,引用,函数,类型,模板,名称空间或值作为另一个范围内的声明引入的名称,则称该名称具有链接

翻译成普通英语:

如果您可以在另一个范围内重新声明它,则它具有链接。 否则,不。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM