C++调用构造函数与析构函数的顺序

来源:互联网 发布:生态文明我知我行答案 编辑:程序博客网 时间:2024/05/27 12:22
class A{public:    A(string str=NULL)    {        s=str;        cout<<"constructor A "<<s<<endl;    }    ~A()    {        cout<<"destructor A "<<s<<endl;    }    A(const A &p)    {        s=p.s;        cout<<"copy constructor A "<<s<<endl;    }private:    string s;};class B:public A{public:    B(string str):A(str)    {        s=str;        cout<<"constructor B "<<s<<endl;    }    ~B()    {        cout<<"destructor B "<<s<<endl;    }private:    string s;};A* getA(A t){    A* tmp=new A("c");    return tmp;}int _tmain(int argc, _TCHAR* argv[]){    //输出constructor A a    A a("a");    //输出copy constructor A a    A b(a);    //输出 copy constructor A a      //    constructor A c    //    destructor A a    A* c=getA(a);    //输出 constructor A d    //    constructor B d    B d("d");    //输出 destructor A c    delete c;    //在函数结束时按照创建顺序调用析构函数    //destructor B d    //destructor A d    //destructor A a    //destructor A a    return 0;}

派生类的构造函数调用顺序:基类构造函数–派生类构造函数–派生类析构函数–基类析构函数

0 0
原创粉丝点击