多重継承を使用して、開発中の複雑な階層を解決しようとしています。状況は次のとおりです。
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
1つの機能だけになるのでしょうか。foo()
メソッドは両方の親で仮想であるため、同じものにコリメートする必要があるため、私はそれについて考えていますが、Javaから来たという理由だけでこれを薄くし、C++では異なる可能性があると感じています。わからない、またはただのため、仮想関数foo()
を2回宣言する必要があります。これは私が守りたい要件です。ClientClass
B
C
A
編集:とが純粋な仮想foo()
である場合でも、同じ答えが当てはまりますか?(例)A
B
= 0