天天看點

c++多重繼承和虛繼承

多重繼承

多重繼承是指從多個直接基類中産生派生類的能力。

多重繼承的派生類繼承了所有父類的屬性。

struct Base1 {

Base1() = default;

Base1(const string&);

Base1(shared_ptr<int>);

};

struct Base2 {

Base2() = default;

Base2(const string&);

Base2(int);

};

struct D1 :public Base1, public Base2 {

using Base1::Base1;

using Base2::Base2;

D1(const string& s) :Base1(s), Base2(s) {}

D1() = default;

};

虛繼承

虛繼承的目的是令某個類做出聲明,承諾願意共享它的基類。其中,共享的基類對象稱為虛基類。

虛繼承就是為了解決繼承中的二義性。

class ZooAnimal {};

class Raccoon : public virtual ZooAnimal {};//ZooAnimal定義成了Raccoon和Bear的虛基類。

class Bear : virtual public ZooAnimal {};//兩種方式相同

因為Bear和Raccoon是虛繼承,是以Panda中隻有一個ZooAnimal基類部分

class Panda : public Raccoon, public Bear {};

繼續閱讀