Qui č l'esempio completo, con l'implementazione dei costruttori di copia.
Nota quello in Derived. In pratica ogni costruttore richiama il corrispondente nella classe base, dato che i costruttori sono esplicitati.
codice:
class Base {
protected:
int campo1;
string campo2;
public:
Base(int c1, string s1) : campo1(c1), campo2(s1) {}
Base(const Base& b) : campo1(b.campo1), campo2(b.campo2) {
}
};
class Derived : public Base {
protected:
double campo3;
public:
Derived(int c1, string s1, double d1) : Base(c1, s1), campo3(d1) {}
Derived(const Derived& d) : Base( (const Base&) d), campo3(d.campo3){
}
};
class Container {
Derived d;
public:
Container(const Derived& md) : d(md) {}
};
int main() {
Derived d(10, "ciao", 4.0);
Container c (d);
}