Consideriamo, ad esempio, il seguente codice:
#include <iostream>
using namespace std;
class Uno{
public:
int a;
Uno(){
a = 1;
cout<<"Costruttore Uno()"<<endl; }
};
class Due: public Uno{
public:
int b;
Uno u;
Due(){
b = 2;
cout<<"Costruttore Due()"<<endl; }
};
class Tre: public Due{
int c;
Due d;
public:
Tre(){
c = 3;
cout<<"Costruttore Tre()"<<endl; }
};
int main(){
Tre obj3;
return 0;
}
L'output di questo codice è il seguente:
Costruttore Uno()
Costruttore Uno()
Costruttore Due()
Costruttore Uno()
Costruttore Uno()
Costruttore Due()
Costruttore Tre()
In generale, quali sono le regole che segue il compilatore per stabilire l'ordine di chiamata dei costruttori?