ダイヤモンド継承と仮想継承

ダイヤモンドの継承

クラスは、多重継承を許可され、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;
}

おすすめ

転載: www.cnblogs.com/chay/p/10981000.html