我正在尝试使用多重继承来解决我正在开发的复杂层次结构。情况如下:
class A {
virtual void foo();
}
class B {
virtual void foo();
}
class C : public B {
}
class D : public A, public C {
void foo() { ... }
}
class ClientClass {
void method() {
A *a = new D();
a->foo();
}
我想知道的是:最终将D
只有一个功能foo()
吗?我正在考虑它,因为该方法在父母双方都是虚拟的,所以他们应该喜欢准直到同一个,但我只是因为我来自 Java 并且我觉得它在 C++ 中可能有所不同。我必须foo()
两次声明虚函数,因为ClientClass
不知道B
或C
只是A
. 这是我想保留的要求。
编辑:即使两者都是纯虚拟的,同样的答案foo()
是否适用A
?B
(例如= 0
)