今天面试一个问题,很长时间没有看这方面的东西了,并且确实有部分原因是没有准备面试,就是抱着打酱油的心态去的。惭愧!
#include <iostream>
using namespace std;
class A
{
public:
A(){cout<<"A"<<endl;}
~A(){cout<<"~A"<<endl;}
};
class B
{
public:
B(){cout<<"B"<<endl;}
~B(){cout<<"~B"<<endl;}
};
class C:public A
{
public:
C(){cout<<"C"<<endl;}
~C(){cout<<"~C"<<endl;}
private:
B b;
};
int main()
{
A *p = new C();
delete p;
return 0;
}
对于这个问题,如果是class A的指针,生成顺序就是A,B,C,~A.
只有当class C的指针申请的时候才会是A,B,C,~C,~B,~A.
惭愧之至,视为之记!