Vererbungsgraph
|
anstatt eines Vererbungsbaums bei Einfachvererbung
|
|
|
? |
Was geschieht, wenn mehrere Oberklassen
gleiche Methoden definieren?
|
? |
Was geschieht, wenn mehrere Oberklassen
eine gemeinsame Oberklasse als Vorfahre
in der Klassenhierachie besitzen?
|
| |
Namenskonflikte |
bei Mehrfachvererbung
|
|
class X {
public:
int d;
void foo() { ++d; }
};
|
|
class Y1 : public X {
public:
int d1;
void bar() { ++d1; }
};
|
|
class Y2 : public X {
public:
int d2;
void bar() { --d2; }
};
|
|
class Z : public Y1, public Y2 {
};
|
|
void f() {
Z * o;
o->bar();
o->foo();
o->d;
}
|
| |
Diamond Problem |
Zwei beerbte Klassen besitzen eine gemeinsame Oberklasse.
|
? |
Wann ist Mehrfachvererbung sinnvoll?
|
? |
Wann ist Mehrfachvererbung einfach und effizient zu implementieren?
|
| |