複数レベルの継承を示す次のサンプル コードを検討してください。
Case1 : ここでは、クラスderived1
はbase
仮想継承によってクラスから派生し、クラスはクラスから直接derived2
派生します。derived1
class base
{
};
class derived1 : virtual public base
{
};
class derived2 : public derived1
{
};
Case2 : 仮想継承が関係しないことを除いて、Case1 と同じです。
class base
{
};
class derived1 : public base // no virtual inheritance
{
};
class derived2 : public derived1
{
};
derived2
どちらの場合も、クラスのオブジェクトを作成するとします。
のオブジェクトに含まれるサブオブジェクトに関して、Case1 と Case2 はどのように異なります
derived2
か?Case1 は Case2 よりも重要ですか?
PS: 多重継承中の仮想基本クラスの重要性は明らかです。