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){
    
    	}
    };
    

  • Mod

    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?


  • Mod

    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.


Log in to reply