Ciao ragazzi, mi sono trovato a dover "decifrare" (dover dire l'uscita a video) il seguente programma scritto in C++.
#include <iostream>
using namespace std;
class A{
public:
int x;
A(int n=0) { x=n; cout << "A:x=" << x <<endl;}
void f() {cout << "A:f() x=" << x << endl;}
virtual ~A() { cout << "via A" << endl;}
};
class B: public A{
A uno;
public:
B(int n=7):uno(n) { x=n; cout << "B:x=" << x << endl;}
virtual void f() {cout << "B:f() x=" << x << endl;}
~B() { cout << "via B" << endl;}
};
class C: public B{
B due;
int x;
public:
C(int n=1) :B(n) {x=n; cout << "C:x=" << x << endl;}
void f() { cout << "C:f() x=" << x << endl;}
~C() {cout << "via C" << endl;}
};
int main(){
C* pc = new C(3);
B* pb = pc;
A* pa = pc;
pa->f();
pb->f();
pc->f();
delete pb;
return 0;
}
Ci sono diverse cose che non capisco, a cominciare da: cosa vuol dire A(int n=0)? E virtual ~A()?
E nella classe B, cosa significa A uno?
Apparte queste piccole cose, potete spiegarmi cosa effettivamente compie questo programma? Grazie!