#include <iostream>
#include <fstream>
using namespace std;
ofstream cout1("c://output.txt");
class OtherOb
{
public:
OtherOb(){
cout1<<"other ob"<<endl;
}
~OtherOb(){
cout1<<"~other ob"<<endl;
}
};
class A
{
public:
A() {
cout1<<"A::A"<<endl;
}
virtual ~A(){
cout1<<"~A::A"<<endl;
}
};
class B:public A
{
public:
B() {
cout1<<"B::B"<<endl;
}
~B(){
cout1<<"~B::B"<<endl;
}
OtherOb a;
};
void main()
{
A a;
cout1<<"......"<<endl;
B b;
cout1<<"........"<<endl;
A *c = new B;
cout1<<"after delete c"<<endl;
delete c;
cout1<<"........"<<endl;
}
//
A::A
......
A::A
other ob
B::B
........
A::A
other ob
B::B
after delete c
~B::B
~other ob
~A::A
........
~B::B
~other ob
~A::A
~A::A
说明:把 OtherOb a; 改成A a;则输出结果在对应位置为A的构造或析构函数调用