Copy-Ctor bei Vererbung?
-
In Klasse A2 hab ich einen Copy-Construktor, welcher mit A2 kopieren soll. Aber wie funktioniert das "richtig" eigentlich müsste doch der Kopiekonstruktor von B aufgerufen werden (um B teil zu kopieren) und dann der Teil von A1 oder?
class B{ protected: int X; public: B(){} B(int g) :X(g){} }; class A2 : public B{ int Z; public: A2(){} A2(int k, int g) : B(g) , Z(k){} //COPY KONSTRUKTOR A2(const A2 &oScr) : B(oScr.X), Z(oScr.Z){ } };
-
Hier nochmal der richtig Code:
class B{ protected: int X; public: B(){} B(int g) :X(g){} B(const B &oScr) : X(oScr.X){} }; class A1 : public B{ int Y; public: A1(){} A1(int k, int g) : B(g) , Y(k){} }; class A2 : public B{ int Z; public: A2(){} A2(int k, int g) : B(g) , Z(k){} //COPY KONSTRUKTOR A2(const A2 &oScr) : B(oScr), Z(oScr.Z){ } };
-
Wie lautet die Frage?
-
ob der Copy Ctor in dem code schnippsel für die abgeleitet Klasse A2:
//COPY KONSTRUKTOR A2(const A2 &oScr) : B(oScr), Z(oScr.Z){ }
so korrekt ist?
-
VererbungNoob schrieb:
ob der Copy Ctor in dem code schnippsel für die abgeleitet Klasse A2:
//COPY KONSTRUKTOR A2(const A2 &oScr) : B(oScr), Z(oScr.Z){ }
so korrekt ist?
So wird der Konstruktor auch vom Compiler generiert.
-
ok danke, d.h. in dem teil
B(oScr)
wir der teil der basis klasse selektiert und kopiert.