#include
<
fstream
>
using namespace std;
ofstream out ( " order.txt " );
#define CLASS(ID) class ID{\
public : \
ID( int ) {out << #ID " constructor\n";} \
~ ID() {out << #ID " destructor\n";} \
};
CLASS(base1);
CLASS(member1);
CLASS(member2);
CLASS(member3);
CLASS(member4);
class derived1 : public base1
{
member1 m1;
member2 m2;
public:
derived1(int) : m2(1), m1(2), base1(3)
{
out << "derived1 constructor\n";
}
~derived1()
{
out << "derived1 destructor\n";
}
} ;
class derived2 : public derived1
{
member3 m3;
member4 m4;
public:
derived2():m3(1),derived1(2),m4(3)
{
out << "derived2 constructor\n";
}
~derived2()
{
out << "derived2 destructor\n";
}
} ;
int _tmain( int argc, _TCHAR * argv[])
{
derived2 d2;
return 0;
}
order.txt的输出内容:
base1 constructor
member1 constructor
member2 constructor
derived1 constructor
member3 constructor
member4 constructor
derived2 constructor
derived2 destructor
member4 destructor
member3 destructor
derived1 destructor
member2 destructor
member1 destructor
base1 destructor
using namespace std;
ofstream out ( " order.txt " );
#define CLASS(ID) class ID{\
public : \
ID( int ) {out << #ID " constructor\n";} \
~ ID() {out << #ID " destructor\n";} \
};
CLASS(base1);
CLASS(member1);
CLASS(member2);
CLASS(member3);
CLASS(member4);
class derived1 : public base1
{
member1 m1;
member2 m2;
public:
derived1(int) : m2(1), m1(2), base1(3)
{
out << "derived1 constructor\n";
}
~derived1()
{
out << "derived1 destructor\n";
}
} ;
class derived2 : public derived1
{
member3 m3;
member4 m4;
public:
derived2():m3(1),derived1(2),m4(3)
{
out << "derived2 constructor\n";
}
~derived2()
{
out << "derived2 destructor\n";
}
} ;
int _tmain( int argc, _TCHAR * argv[])
{
derived2 d2;
return 0;
}
order.txt的输出内容:
base1 constructor
member1 constructor
member2 constructor
derived1 constructor
member3 constructor
member4 constructor
derived2 constructor
derived2 destructor
member4 destructor
member3 destructor
derived1 destructor
member2 destructor
member1 destructor
base1 destructor