C++面向对象编程:多重继承与对象关系实现
1. 多重继承与菱形继承问题
多重继承是面向对象编程中一个具有争议性的话题。在面向对象设计中使用多重继承,可能会产生菱形继承层次结构,这种结构会带来一些问题,比如内存重复、构造/析构重复以及访问重复子对象时的歧义。
例如,在一个涉及 LifeForm 、 Horse 、 Person 和 Centaur 的例子中, Centaur 继承自 Horse 和 Person ,而 Horse 和 Person 又都继承自 LifeForm ,这就形成了一个菱形继承结构。
// 假设存在 LifeForm、Horse、Person 和 Centaur 类
class LifeForm {
// ...
};
class Horse : public LifeForm {
// ...
};
class Person : public LifeForm {
// ...
};
class Centaur : public Horse, public Person {
// ...
};
为了解决这些问题,C++ 提供了虚拟基类机制。使用虚拟基类后, Centaur 实例中只会有一个
超级会员免费看
订阅专栏 解锁全文
75万+

被折叠的 条评论
为什么被折叠?



