【发布时间】:2015-02-25 15:52:05
【问题描述】:
我有一个(保证树形的)级联类,例如
class rock_bottom {
...
virtual foo() = 0;
};
class A : rock_bottom {...}
class intermediate: rock_bottom {...}
class B : intermediate {...}
class higher_up {...}
class C : higher_up {...}
我想在字母类 A、B、C 中实现 foo()。我需要在哪里声明 foo? (虚拟的?纯粹的?)我需要在中间层intermediate 和higher_up 中(微不足道的)实现吗?
【问题讨论】:
-
如果它是纯虚拟的,则需要在派生自
rock_bottom的每个非抽象类中实现它。否则,你不能。 -
您必须使用相同的签名来实现(虚拟是可选的)。
-
@Aleph:不是每个班级。只是那些你想成为非抽象的(或那些直接或间接的基类)。
-
@MikeSeymour 你当然是对的,请原谅我的不精确。
-
higher_up是否应该派生自其他类之一?正如发布的那样,C没有任何东西可以覆盖。
标签: c++ multiple-inheritance pure-virtual