我们如何在与该类相同的数据类型的类中声明静态成员?

bhu*_*hni 0 c++ static class

可能重复:
为什么允许类拥有自身的静态成员,而不是非静态成员?

这是一段无效的代码

struct a{
   a mem;    //Invalid as the compiler does not know how much memory to allocate
  };
Run Code Online (Sandbox Code Playgroud)

但这是有效的:

class Date{
  int d,m,y;
  static Date Default_date;  //Valid
};
Run Code Online (Sandbox Code Playgroud)

在Date数据类型甚至没有正确定义之前,编译器如何能够知道这里分配了多少内存!

这在某种意义上是否与其他静态定义不同?

Bo *_*son 7

静态成员不存储在类中,因此其大小不会影响类的总大小.

您必须在其他位置定义静态成员,可能在.cpp文件中.当时,编译器必须知道类的大小.


Dan*_*ani 5

在第一种情况下,它是无效的,因为它是一个无限大小的递归结构.在第二种情况下,它是可以的,因为在声明之后会发生实际的内存分配.