2011-12-28 5 views
0
class A 
{ 
    static const A a; 
} 

私たちはなぜこれを行うことができますが、静的という言葉なしではこれを行うことはできません。なぜクラスの静的オブジェクトを同じクラスの中に宣言できますか?

+0

あなたはどうすると思いますか? – SLaks

+0

無限の再帰がないと仮定して、Aがテンプレートクラスであれば、 'static'キーワードなしでこのようなことを行うこともできます。 'テンプレートクラスA {A a;};'のようなもので、0の特殊化があります。しかし、私がそれをしたいと思っているのか、それともそれが可能であってもそれを知覚できる使用法があれば、私に尋ねないでください。 – Damon

+1

@Damon:A はA とは全く異なるタイプです。あなたのサンプルは、 'class A {B b;};'のように書くこともできます。確かにC++で可能です。 –

答えて

4

staticメンバーの値は1つだけです。基本的にはクラス宣言にスコープされたグローバル変数です。

staticメンバーは、各クラスインスタンスに表示される値です。
無限の量のメモリを消費するので、クラスが直接それ自身を含むのは意味がありません。

ポインタが必要な場合があります。

関連する問題