C ++: preocupaciones de diamantes
-
27-10-2019 - |
Pregunta
Pregunta simple: ¿Causará esta jerarquía un 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
};
Solución
No. Dibuja la imagen; Todas las bases son únicas:
A
|
V
B C
\ /
V
D
El "problema de diamantes" solo se refiere a clases base ambiguas debido a múltiples bases repetidas, por ejemplo, si D
debían derivar de ambos A -> B
y A -> C
:
No-diamond-problematic: Virtually-inherited diamond:
A A A
| | v/ \v
B C B C
\ / \ /
V V
D D
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow