【发布时间】:2012-09-13 16:59:16
【问题描述】:
我正在尝试使用多重继承来解决我正在开发的复杂层次结构。情况如下:
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。这是我想保留的要求。
编辑:即使A 和B 中的foo() 都是纯虚拟的,同样的答案是否适用? (例如= 0)
【问题讨论】:
-
我只是稍微摆弄了多重继承,所以我无法真正回答您的问题。不过,我要警告你,有大量程序员认为任何使用多重继承都会自动成为糟糕的设计。
-
@KRyan:我已经知道这一点,但这是我的选择,在这种特定情况下会派上用场。
-
你能描述一下你为什么需要这个吗?
标签: c++ multiple-inheritance virtual-functions