在C++中,類可以繼承多個基類,這就是多重繼承
Derived d;
d.Base1::memberFunction(); // 訪問Base1的成員函數
d.Base2::memberFunction(); // 訪問Base2的成員函數
class Derived : public Base1, public Base2 {
public:
Derived() : Base1(), Base2() {} // 調用Base1和Base2的構造函數
~Derived() { Base2::~Base2(); Base1::~Base1(); } // 調用Base2和Base1的析構函數
};
class Base1 {
public:
void function() { cout << "Base1 function" << endl; }
};
class Base2 {
public:
void function() { cout << "Base2 function" << endl; }
};
class Derived : public Base1, public Base2 {
public:
void function() { Base1::function(); } // 明確指定訪問Base1的成員函數
};
virtual
聲明虛繼承:class Base {
public:
int value;
};
class Derived1 : virtual public Base {
// ...
};
class Derived2 : virtual public Base {
// ...
};
class FinalDerived : public Derived1, public Derived2 {
// ...
};
總之,C++中的多重繼承允許類繼承多個基類的成員,但需要注意訪問控制、構造函數、析構函數和二義性等問題。在需要避免基類實例多次存在的情況下,可以使用虛繼承。