我正在尝试使用多重继承来解决我正在开发的复杂层次结构。情况如下:
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)