分类: C/C++
2010-06-12 20:10:28
/************************************************************************
* 虚继承构造函数的调用顺序
************************************************************************/
#include<iostream.h>
#include <stdio.h>
class A
{
public:
A(char *s)
{
cout<<s<<endl;
}
~A(){cout<<"A destruction!"<<endl;}
}; 
class B:virtual public A
{
public:
B(char *s1,char *s2):A(s1)
{
cout<<s2<<endl;
}
~B(){cout<<"B destruction!"<<endl;}
}; 
class C:virtual public A
{
public:
C(char *s1,char *s2):A(s1)
{
cout<<s2<<endl;
}
~C(){cout<<"C destruction!"<<endl;}
}; 
class D:public B,public C
{
public:
D(char *s1,char *s2,char *s3,char *s4):B(s1,s2),C(s1,s3),A(s1)
{
cout<<s4<<endl;
}
~D(){cout<<"D destruction!"<<endl;}
};
int main()
{
D d("A construction!","B construction!","C construction!","D construction!");
return 0;
}