class T1 { public: T1(); ~T1(); virtual void free(); }; T1::T1() { puts("T1::T1"); }; T1::~T1() { puts("T1::~T1"); free(); }; void T1::free() { puts("T1::free"); }; class T2 : public T1 { public: T2(); ~T2(); virtual void free(); }; T2::T2() { puts("T2::T2"); }; T2::~T2() { puts("T2::~T2"); free(); }; void T2::free() { puts("T2::free"); }; int _tmain(int argc, _TCHAR* argv[]) { /* T2 * pt2; T1 * pt1; pt2=new T2(); pt1 = pt2; //pt1->free(); delete pt1; */ T1 * pt1; pt1=new T2(); pt1->free(); delete pt1; getchar(); return 0; } ----------------------------------------------------- 输出结果: T1::T1 T2::T2 T2::free T1::~T1 T1::free |