3 回答
TA贡献1876条经验 获得超5个赞
人们非常正确地说你不需要多重继承,因为你可以用多重继承做任何事情,你也可以用单继承做。你只需使用我提到的委托技巧。此外,您根本不需要任何继承,因为您使用单继承执行的任何操作,您也可以通过转发类来继承。实际上,您也不需要任何类,因为您可以使用指针和数据结构来完成所有操作。但是你为什么要那样做呢?什么时候使用语言设施方便?你什么时候想要一个解决方法?我已经看到了多继承很有用的情况,我甚至看到过很复杂的多继承很有用的情况。通常,我更喜欢使用该语言提供的功能来进行变通
TA贡献1744条经验 获得超4个赞
没有理由避免它,它在情况下非常有用。但您需要了解潜在的问题。
最大的一个是死亡钻石:
class GrandParent;
class Parent1 : public GrandParent;
class Parent2 : public GrandParent;
class Child : public Parent1, public Parent2;
您现在在Child中有两个GrandParent“副本”。
C ++已经想到了这一点,并允许你做虚拟继承来解决问题。
class GrandParent;
class Parent1 : public virtual GrandParent;
class Parent2 : public virtual GrandParent;
class Child : public Parent1, public Parent2;
始终检查您的设计,确保您没有使用继承来节省数据重用。如果你可以用组合表示相同的东西(通常你可以),这是一个更好的方法。
- 3 回答
- 0 关注
- 593 浏览
添加回答
举报