【发布时间】:2015-01-02 20:41:35
【问题描述】:
类的静态成员被编译为类范围的全局变量。如何编译 const 静态成员和静态 constexpr 成员? 每个 .o 文件的编译器是否会复制此静态成员或以其他方式完成?
【问题讨论】:
-
常规静态 const 成员具有外部链接。
-
如果我将一些静态 const 成员的定义放在类声明(.h 文件)中,为什么链接器不警告我双重定义(如果是外部链接)?
-
因为整数有特殊情况。除非您将它们的定义放在类之外,否则它们没有联系。
-
@NeilKirk 他们在所有情况下都有外部联系。整数的特殊情况只是整数可以有一个类内初始化器。当且仅当变量是 odr-used 时才需要外部定义。
标签: c++ class static constants linkage