Ich weiß nicht genau, wie der Code funktioniert. Wie A c0 = neue C(); * sogar funktionieren? Wie kann ich ein Zeiger 'A' Objekt von einem 'C' machen?Wie funktioniert die Erbschaft hier?
class A {
public:
A() { print("Constructor of A"); }
virtual ~A() { print("Destructor of A"); }
};
class B : public A {
public:
B() { print("Constructor of B"); }
~B() { print("Destructor of B"); }
};
class C : public B {
public:
C() { print("Constructor of C"); }
~C() { print("Destructor of C"); }
};
int main() {
print("A* = C");
A* c0 = new C();
delete c0;
print("B* = C");
B* c1 = new C();
delete c1;
print("C* = C");
C* c2 = new C();
delete c2;
return 0;
}
Ich dachte, ich vor, das Erbe eine lange Zeit verstanden, aber jetzt, wenn ich es zu benutzen, brauche ich habe gerade im Code verloren.
'Klasse C: öffentliches B' bedeutet" ein 'C' ist ein' B' ". Außerdem ist ein 'B' ein' A', also ein 'C' ist auch ein' A'. Da ein 'C' ein' A' ist, ist es nicht verwunderlich, dass Sie es einem 'A *' zuordnen können. – nwp
Um ... Aber dieser Code verwendet nur sehr grundlegende, "Kindergarten Grade" Vererbungsmerkmale der Sprache. Wie ist es möglich, "das Erbe zu verstehen", dabei "verloren" zu gehen? – AnT