可能性の重複:
Why is a class allowed to have a static member of itself, but not a non-static member?クラスと同じデータ型のクラスで、どのようにして静的メンバーを宣言できますか?
これは、コード
struct a{
a mem; //Invalid as the compiler does not know how much memory to allocate
};
の無効部分があるしかし、これは有効です。
class Date{
int d,m,y;
static Date Default_date; //Valid
};
方法日付データ型が正しく定義されていないうちに、ここでどのくらいのメモリを割り当てるかをコンパイラが知ることができます!!
これは、ある意味で他の静的な定義とは異なりますか?
コンパイラは、静的メンバーを宣言したときの日付の大きさを知ることができません。しかし、それについて考える - それはこの時点でそれを知る必要はありません。 –
私は推測する** **コンパイラは静的変数のメモリを割り当てていない(クラスの内部に)が、宣言される時はメモリを割り当てません。例えば、フィールドでは宣言時に型自体のサイズを知る必要があります。 私はそれがコンパイラによって行われるかもしれないと思っています。 –