1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| #include <iostream.h> // cout
class A1
{
public:
int x; // donnée membre.
A1() { cout<<"A1 constr def"<<endl;}
virtual ~A1() { cout<<"A1 destr"<<endl; }
};
class B1 : public A1
{
public:
B1() {cout<<"B1 constr def"<<endl;}
virtual ~B1() { cout<<"B1 destr"<<endl; }
void doit() {cout<<"B1 just do it... "<<x<<endl;}
};
class X1 : virtual public A1
{
public:
X1() {cout<<"X1 constr def"<<endl;}
virtual ~X1() { cout<<"X1 destr"<<endl; }
void doit() {cout<<"X1 just do it... "<<x<<endl;}
};
class Y1 : virtual public A1
{
public:
Y1() {cout<<"Y1 constr def"<<endl;}
virtual ~Y1() { cout<<"Y1 destr"<<endl; }
};
class Z1 : public X1, public Y1
{
public:
Z1() {cout<<"Z1 constr def"<<endl;}
virtual ~Z1() { cout<<"Z1 destr"<<endl; }
};
int main( int argc, char* args[] )
{
cout<<"--- test Z1 --- en diamant"<<endl;
Z1 *p=NULL;
p = new Z1;
p->x=2;
p->doit();
delete p;
cout<<"--- test B1 --- heritage simple"<<endl;
B1*q=new B1;
delete q;
cout<<"--- test X1 --- heritage avec virtual"<<endl;
X1*r=new X1;
delete r;
return 0;
} |
Partager