クラスAに静的メンバー変数があり、クラスBはクラスAから派生しています。
class A
{
public:
A()
{
a = 3;
}
static int a;
};
int A::a = 0;
class B : public A
{
public:
B()
{
a = 4;
}
};
void main()
{
A objA;
cout << "Before:" << A::a;
B obj;
cout << endl << "After:" << A::a;
}
静的フィールドは継承されますか? 派生型オブジェクトが作成されると、基本型も作成されます。次の質問があります。
代わりに
A::a
私もアクセスできるのはobjA.a
どうしてですか?静的変数は、そのクラスのオブジェクトを介してアクセスできません。派生クラスに対しても新しい静的変数が作成される場合 (に固有
class B
)、なぜ静的変数を初期化する必要がないのclass B
ですか?次の出力が次のように表示されるのはなぜですか。
前:3
後:4
いつ前後に3を表示する予定ですか?