1

[class.static.data]/2

在其类定义中声明非内联静态数据成员不是定义,并且可能是cv void以外的不完整类型。...

这意味着,这是一个有效的代码:

#include <iostream>
struct S
{
   static S s;
};

S S::s;

int main()
{
    std::cout << &(S::s) << '\n';
    std::cout << &(S::S::s) << '\n';
}

&(S::s)上面的代码段为和打印了相同的地址&(S::S::s)

允许在 C++ 中进行这种构造的原因是什么?

4

0 回答 0