繁体   English   中英

静态const成员是否具有内部链接?

[英]Does static const member have internal linkage?

类的静态成员被编译为类作用域的全局变量。 编译的const静态成员和静态constexpr成员如何? 是否每个.o文件的编译器都会复制此静态成员,否则将其复制吗?

这由C ++ 14 [class.static.data] / 5覆盖:

命名空间范围内的类的Static数据成员具有外部链接。 本地类不应具有静态数据成员。

“名称空间范围内的类”是指不在块范围内的类(也称为“本地类”)。 例如此代码:

void func()
{
    class C { static const int x = 5; };
}

格式不正确。


要回答您的问题:

是否每个.o文件的编译器都会复制此静态成员,否则将其复制吗?

通常,如果静态成员在类之外具有定义,则在该定义位置对应的目标文件中将有一个副本,否则将没有任何副本。

暂无
暂无

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

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