第四节 · 遗产分配 · 访问控制与派生类作用域
C++ 支持多重继承:一个类可以从多个基类继承。这是强大但复杂的特性。
基本多重继承
class Flyable
{
public:
void fly()
{
cout << "Flying in the sky" << endl;
}
};
class Swimmable
{
public:
void swim()
{
cout << "Swimming in water" << endl;
}
};
// 鸭子既能飞又能游
class Duck : public Flyable, public Swimmable
{
public:
void quack()
{
cout << "Quack quack!" << endl;
}
};
int main()
{
Duck d;
d.fly(); // 继承自 Flyable
d.swim(); // 继承自 Swimmable
d.quack(); // 自己的方法
return 0;
}名称冲突
菱形继承问题
虚继承解决菱形问题
虚继承的构造函数
接口继承模式
多重继承最常用于实现多个接口:
混入(Mixin)模式
何时使用多重继承
推荐使用:
实现多个接口
Mixin 模式
组合不相关的功能
避免使用:
继承多个有状态的类
存在方法名冲突
导致复杂的菱形继承
替代方案:组合
习题
解释虚继承是如何解决菱形问题的。
实现一个使用多重继承的游戏角色系统。
比较多重继承和组合的优缺点。
Last updated