Ich habe diese beiden KlassenCopykonstruktor von Base und abgeleiteten Klassen
///////////BASE CLASS
class Base{
public:
Base(int = 0);
~Base();
Base(Base&);
Base(Derived&); ////<-may be problem here?, note: I tried without this function
int valueOfBase();
protected:
int protectedData;
private:
int baseData;
};
/////////////DERIVED CLASS
class Derived: public Base{
public:
Derived(int);
//Derived(Derived&);
~Derived();
private:
int derivedData;
};
and here my main
int main(){
Base base(1);
Derived derived = base;
return 0;
}
ich gelesen, dass, wenn meine abgeleiteten Klasse copy c'tor of the base will be called
nicht Kopie c'tor haben, aber jedes Mal, wenn ich erhalten conversion from Base to non-scalar type Derived requested
, die falsch ist? mein Compiler oder mein Buch, oder habe ich gerade missverstanden? danke im voraus
Sie haben wahrscheinlich falsch gelesen (der vom Compiler generierte Kopierkonstruktor für Derived * auch * kopiert den Basisteil des Objekts mit dem Kopierkonstruktor von Base). - Die Verwendung des Kopierkonstruktors des Elternteils * an dieser Stelle * ergibt keinen Sinn: das würde * bedeuten, dass * Objekte standardmäßig beim Kopieren in Scheiben geschnitten werden. – UncleBens