【发布时间】:2017-09-07 19:07:54
【问题描述】:
我已经阅读了this,上面写着
类的名称、它们的成员函数、静态数据成员(const 与否),嵌套类和枚举,函数优先 在类体内引入友元声明
默认情况下具有外部链接。但是在类体内声明的未指定为静态的变量呢?此外,它以
开头在命名空间范围内声明的以下任何名称都具有外部 联动
,但是类范围是否被视为命名空间范围?我的意思是类作用域和命名空间作用域是不同的,那么为什么他们一开始就说以下内容适用于命名空间作用域内提到的声明呢?我的意思是,例如,成员函数是在类范围内声明的,并且它们会像在命名空间范围内一样提及它们?
【问题讨论】:
-
变量永远不会有链接。只有 names 有链接。 (因为链接描述了两个相似的名称如何相互关联。)
-
@KerrekSB 好吧,那么我认为我的意思是名称而不是变量。更具体地说,“成员变量的名称”
-
成员变量用于引用类内的对象。他们不需要“联系”。他们的名字转化为类实例的偏移量。
-
类方法确实有链接。类名是范围,但不是命名空间。
-
类方法具有链接,因为您需要能够在调用方法时调用函数。该方法可能在其他翻译单元或库中定义,因此需要链接才能找到表示该方法的实际函数。当你引用一个成员变量时,类声明必须在视图中(否则该类将是一个不完整的类型),因此编译器知道偏移量。
标签: c++