class Base0{
public:
int var0;
Base0ini()
{
cout<<"Base0的构造函数"<<endl;
}
~Base0()
{
cout<<"Base0的析构函数"<<endl;
}
void fun0()
{
cout<<"Member of Base0"<<endl;
}
};
class Base1:virtual public Base0{
public:
int var1;
Base1ini()
{
cout<<"Base1的构造函数"<<endl;
}
~Base1()
{
cout<<"Base1的析构函数"<<endl;
}
};
class Base2:virtual public Base0{
public:
int var2;
Base2ini()
{
cout<<"Base2的构造函数"<<endl;
}
~Base2()
{
cout<<"Base2的析构函数"<<endl;
}
};
class Derived:public Base1,public Base2{
public:
int var;
void fun()
{
cout<<"Menber of Derived"<<endl;
}
Derivedini()
{
cout<<"Derived的构造函数"<<endl;
}
~Derived()
{
cout<<"Derived的析构函数"<<endl;
}
};
void funTest(Base0 &b)
{
b.Base0ini();
b.~Base0();
b.fun0();
}
int main() {
Base0 b0;
Base1 b1;
Base2 b2;
Derived d;
funTest(b0);
funTest(b2);
funTest(b1);
funTest(d);
return 0;
}
结果如下
Base0的构造函数
Base0的析构函数
Member of Base0
Base0的构造函数
Base0的析构函数
Member of Base0
Base0的构造函数
Base0的析构函数
Member of Base0
Base0的构造函数
Base0的析构函数
Member of Base0
Derived的析构函数
Base2的析构函数
Base1的析构函数
Base0的析构函数
Base2的析构函数
Base0的析构函数
Base1的析构函数
Base0的析构函数
Base0的析构函数