为什么C ++允许在自己的定义中声明不完整的类型?

时间:2017-12-24 13:15:09

标签: c++ incomplete-type static-data

[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 ++中允许这样的构造的原因是什么?

0 个答案:

没有答案