0
class A
{
static const A a;
}
私たちはなぜこれを行うことができますが、静的という言葉なしではこれを行うことはできません。なぜクラスの静的オブジェクトを同じクラスの中に宣言できますか?
class A
{
static const A a;
}
私たちはなぜこれを行うことができますが、静的という言葉なしではこれを行うことはできません。なぜクラスの静的オブジェクトを同じクラスの中に宣言できますか?
static
メンバーの値は1つだけです。基本的にはクラス宣言にスコープされたグローバル変数です。
非static
メンバーは、各クラスインスタンスに表示される値です。
無限の量のメモリを消費するので、クラスが直接それ自身を含むのは意味がありません。
ポインタが必要な場合があります。
あなたはどうすると思いますか? – SLaks
無限の再帰がないと仮定して、Aがテンプレートクラスであれば、 'static'キーワードなしでこのようなことを行うこともできます。 'テンプレートクラスA {A a;};'のようなもので、0の特殊化があります。しかし、私がそれをしたいと思っているのか、それともそれが可能であってもそれを知覚できる使用法があれば、私に尋ねないでください。 –
Damon
@Damon:AはA とは全く異なるタイプです。あなたのサンプルは、 'class A {B b;};'のように書くこともできます。確かにC++で可能です。 –