0

簡単な質問: このヒエラルキーは DP を引き起こしますか?

//Abstract base class
class A {
    //Implement pure virtual methods with a default definition.
    //Pure virtual methods are still declared pure virtual.
};

//Abstract derived class
class B : public A {
    //Define pure virtual methods with a default definition.
    //Pure virtual methods are still declared pure virtual.
};

//Abstract base class
class C {
    //Define pure virtual methods with a default definition.
    //Pure virtual methods are still declared pure virtual.
};

//Concrete class
class D : public B, public C {
    //Implement all methods from D, B, and C
};
4

1 に答える 1

7

いいえ、絵を描いてください。すべての塩基は一意です:

A
|
V
B   C
 \ /
  V
  D

「ダイヤモンドの問題」は、複数の繰り返しベースによるあいまいなベース クラスにのみ関係します。たとえば、とDの両方から派生する場合:A -> BA -> C

No-diamond-problematic:                 Virtually-inherited diamond:

        A   A                                         A
        |   |                                       v/ \v
        B   C                                       B   C
         \ /                                         \ /
          V                                           V
          D                                           D
于 2012-01-11T17:56:33.840 に答える