【发布时间】:2016-09-20 22:07:02
【问题描述】:
假设我有一个类 Alcohol,它有两个派生类:Wine 和 Beer。如果我将创建一个继承自 Wine 和 Beer 的类 Cider 会发生什么?
Cider类中会出现多少份Alcohol?
我知道它可以通过虚拟继承和没有它来完成,但会有什么区别?
【问题讨论】:
-
很明显,用那么多酒精,你会看到双倍的,并且会有两个碱基。
-
独立于答案:这是一个坏主意。苹果酒既不是葡萄酒也不是啤酒,所以它不应该继承其中任何一个。
-
谷歌搜索“钻石继承虚拟”会找到大量解释这一点的文章。而且,顺便说一句,Kerrek SB 和 Baum mit Augen 都是正确的。
-
@BaummitAugen:嗯……它像啤酒一样便宜,但看起来像葡萄酒一样豪华,所以我可以看看如何到达那里。
-
@BaummitAugen:比喻正在迅速走下坡路!现在
cheap是Alcohol?我认为我们在一些地方走得太远了......
标签: c++ oop inheritance abstract-class multiple-inheritance