类中的静态数据成员(在C++中)将被认为是内部链接还是外部链接?我搜索了一下,但找不到任何具体的静态成员变量。
uz75evzq1#
它们有外部链接。请参见http://msdn.microsoft.com/en-us/library/zbh4586z.aspx(谢谢Raymond!)。
z2acfund2#
最近我也对这个问题很感兴趣,我在N4659(C++17的一些草稿)中发现了这个问题:§ 6.5.5此外,一个成员函数、静态数据成员、类作用域的命名类或枚举,或者在类作用域的typedef声明中定义的未命名类或枚举,使得该类或枚举具有用于链接目的的typedef名称(10.1.3),具有与其所属类的名称相同的链接(如果有的话)。因此静态数据成员可以有内部或外部链接,这由类本身决定。例如,未命名名称空间中的类的静态数据成员应该有内部链接。
2条答案
按热度按时间uz75evzq1#
它们有外部链接。请参见http://msdn.microsoft.com/en-us/library/zbh4586z.aspx(谢谢Raymond!)。
z2acfund2#
最近我也对这个问题很感兴趣,我在N4659(C++17的一些草稿)中发现了这个问题:
§ 6.5.5此外,一个成员函数、静态数据成员、类作用域的命名类或枚举,或者在类作用域的typedef声明中定义的未命名类或枚举,使得该类或枚举具有用于链接目的的typedef名称(10.1.3),具有与其所属类的名称相同的链接(如果有的话)。
因此静态数据成员可以有内部或外部链接,这由类本身决定。例如,未命名名称空间中的类的静态数据成员应该有内部链接。