钻石继承和虚继承

钻石继承

在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