#include <iostream> using namespace std; class Reader{ public: Reader() { xCoordinate = NULL; xCoordinate = (int*)malloc(sizeof(int)*100); cout<<"reader default construction"<<endl; } ~Reader() { cout<<"reader destruction!"<<endl; if(xCoordinate) free(xCoordinate); } int *xCoordinate; }; class Reader2{ public: Reader2() { cout<<"reader2 constructor!"<<endl; } ~Reader2() { cout<<"reader2 destructor"<<endl; } }; class Converter{ public: Converter() { reader2 = NULL; reader = new Reader(); cout<<"converter constructor invoked!"<<endl; } ~Converter() { cout<<"converter destruction invoked!"<<endl; if(reader) delete reader; //if(reader2) // delete reader2; } void DoHandle() { //reader2的析构函数和构造函数在一层才和谐 reader2 = new Reader2(); delete reader2; reader2 = NULL; } Reader *reader; Reader2 *reader2; }; int main() { //调用Converter的构造 //在超出该变量的作用域,就自动析构了,比如这里就是函数的 } Converter converter; Converter *pConverter; //不调用构造函数 pConverter = new Converter(); //调用构造函数 Converter *p2Converter; //指针的声明 p2Converter = new Converter(); //调用构造函数 delete p2Converter; //调用析构函数 Converter *p3Converter = new Converter(); p3Converter->DoHandle(); delete p3Converter; //不调用Reader2的构造和析构 Converter *p3Converter = new Converter(); delete p3Converter; return 0; }