在C++中,類(lèi)可以繼承多個(gè)基類(lèi),這就是多重繼承
Derived d;
d.Base1::memberFunction(); // 訪(fǎng)問(wèn)Base1的成員函數(shù)
d.Base2::memberFunction(); // 訪(fǎng)問(wèn)Base2的成員函數(shù)
class Derived : public Base1, public Base2 {
public:
Derived() : Base1(), Base2() {} // 調(diào)用Base1和Base2的構(gòu)造函數(shù)
~Derived() { Base2::~Base2(); Base1::~Base1(); } // 調(diào)用Base2和Base1的析構(gòu)函數(shù)
};
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(); } // 明確指定訪(fǎng)問(wèn)Base1的成員函數(shù)
};
virtual
聲明虛繼承:class Base {
public:
int value;
};
class Derived1 : virtual public Base {
// ...
};
class Derived2 : virtual public Base {
// ...
};
class FinalDerived : public Derived1, public Derived2 {
// ...
};
總之,C++中的多重繼承允許類(lèi)繼承多個(gè)基類(lèi)的成員,但需要注意訪(fǎng)問(wèn)控制、構(gòu)造函數(shù)、析構(gòu)函數(shù)和二義性等問(wèn)題。在需要避免基類(lèi)實(shí)例多次存在的情況下,可以使用虛繼承。