在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++中的多重继承允许类继承多个基类的成员,但需要注意访问控制、构造函数、析构函数和二义性等问题。在需要避免基类实例多次存在的情况下,可以使用虚继承。