Salve , vorrei chiedere se gentilmente qualcuno può spiegarmi un po la funzionalità dei costruttori nel c++ .
Mi spiego meglio, allora una volta che io faccio le classi , quando nell'int main creo gli oggetti classi secondo quali regole di derivazione i costruttori si applicanO?
cioè se io ho questa situazione:
#include <iostream>
using namespace std;
class A {
protected:
int x;
public:
A(int n=0) {x=n; cout << "nuovo A:x = " << x << endl;}
void f() { cout << "A::f() x=" << x << endl; }
~A(){cout << "via A" << endl;}
};
class B: public A{
A a;
protected:
int x;
public:
B(int n): a(n) {x=n; cout << "nuovo B:x = " << x << endl;}
virtual void f() { cout << "B::f() x=" << x << endl; }
~B(){cout << "via B" << endl;}
};
class C: public B{
public:
C(): B(1) {x++; cout << "nuovo C:x= " << x << endl; }
void f() { cout << "C::f() x=" << x <<endl; }
~C(){cout << "via C" << endl;}
} ;
e l'int main è cosi :
int main(){
A* p;
B* q ;
{
C vettore[2];
p = &vettore[0];
q = &vettore[1];
p->f();
q ->f();
}
return 0;
}
mi spiegate passo per passo cosa compare,una volta che mando in esecuzione il programma e perchè?