Ciao a tutti, non capisco una questione di tipo teorica riguardo la chiamata dei costruttori in una classe derivata in presenza di membri dato che a loro volta sono oggetti classe.
Di seguito il codice di un semplice programmino C++ a titolo di esempio:
#inlclude <iostream>
using namespace std;
class Uno{
public:
Uno(){cout<<Costruttore di Uno<<endl;}
};
class Due{
Uno a;
public:
Due(){cout<<"Costruttore di Due<<endl;}
};
class Tre: public Due{
Uno b;
public:
Tre(){cout<<"Costruttore di Tre<<endl;}
};
int main(){
Tre obj3;
return 0;
}
analizzando l'output di questo semplice programma:
Costruttore di Uno
Costruttore di Due
Costruttore di Uno
Costruttore di Tre
non mi riesco a spiegare la prima chiamata al costruttore della classe Uno.
La chiamata al costruttore di Due viene fatta automaticamente dal costruttore di Tre per inizializzare la parte base di Tre, la seconda chiamata al costruttore di Uno viene fatta per inizializzare i membri oggetto classe della parte derivata di Tre (nel nostro caso l'oggetto b) ed infine la chiamata al costruttore di Tre viene fatta per inizializzare la parte derivata di Tre.
In teoria, mi spiegherei la prima chiamata al costruttore della classe Uno per inizializzare i membri oggetto classe della parte base di Tre ma se l'oggetto a della classe Uno non viene ereditato dalla classe Due in quanto privato, perché effettuare tale chiamata?
Grazie in anticipo