未命名的类C++中的静态数据成员

Sri*_*nth 5 c++

我在下面的链接中读到,未命名(匿名)类不应该包含静态数据.有谁可以让我知道它的原因?

https://www-01.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.cbclx01/cplr038.htm 说明如下..

在程序中只能有一个静态成员的定义.未命名的类,未命名的类中包含的类以及本地类不能具有静态数据成员.

R S*_*ahu 10

所有static成员数据(如果它们是ODR使用的)必须在类/结构之外定义.

struct Foo
{
    static int d;
};

int Foo::d = 0;
Run Code Online (Sandbox Code Playgroud)

如果类/结构未命名,则无法在类外定义成员.

int ::d = 0;
Run Code Online (Sandbox Code Playgroud)

不能用于定义未命名类的静态成员.

  • 当然:https://gcc.godbolt.org/z/h7xMrsdcd;链接器的工作是确保最终程序中只有一个“d”实例。 (2认同)