qingcheng奕  
#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;
}

 

posted on 2014-01-11 15:40  qingcheng奕  阅读(338)  评论(0编辑  收藏  举报