#include<iostream>
#include<string>
using namespace std;
class A
{
public:
A(){cout<<"A cons"<<endl;}
virtual void func(){cout<<"A::func()"<<endl;}
~A(){cout<<"A des"<<endl;}
};
class D
{
public:
D(){cout<<"D cons"<<endl;}
void func(){cout<<"D::func()"<<endl;}
~D(){cout<<"D des"<<endl;}
};
class B:public A{
public:
B(){cout<<"B cons"<<endl;}
void func(){cout<<"B::func()"<<endl;}
~B(){cout<<"B des"<<endl;}
D d;
};
class C:public B{
public:
C(){cout<<"C cons"<<endl;}
void func(){cout<<"C::func()"<<endl;}
~C(){cout<<"C des"<<endl;}
};
int main()
{
C c;
A a = c;
a.func();
A *aa = new C;
aa->func();
A &aaa = c;
aaa.func();
}
请问为什么析构函数的调用不是与构造函数相反?