ダイヤモンドの継承
クラスは、多重継承を許可され、C ++では、多重継承を大幅より柔軟を使用する、物事の現実に近いクラスを作り、クラスの表現力を高める大きく、コードの冗長性を減少させる、コードの再利用を改善しますそしてより多くのオブジェクト指向。
多重継承のダイヤモンド継承ケースを以下に示す:クラスA、クラスXとYの派生クラス、クラスXとクラスY Z派生クラス、クラスAと呼ばれる共通の基本クラスは、クラスZサブクラスと呼ばコンフルエント。
class A
{
public:
A(int data) : m_data(data)
{
cout << "A构造 : " << this << endl;
}
protected:
int m_data;
};
class X : public A
{
public:
X(int data) : A(data)
{
cout << "X构造 : " << this << endl;
}
int getData(void) const
{
return m_data;
}
};
class Y : public A
{
public:
Y(int data) : A(data)
{
cout << "Y构造 : " << this << endl;
}
void setData(int data)
{
m_data = data;
}
};
class Z : public X, public Y
{
public:
Z(int data) : X(data), Y(data)
{
cout << "Z构造 : " << this << endl;
}
};
int main(void)
{
Z z(0);
z.setData(100);
cout << "m_data = " << z.getData() << endl;
return 0;
}