在其类中声明非内联静态数据成员 定义不是定义,可能是其他类型的不完整定义 比 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 ++中允许这样的构造的原因是什么?