天天看点

派生类构造函数和析构函数的执行顺序

        派生类继承了基类的成员,实现了代码的重复利用,但基类的构造函数和析构函数不能被继承。如果在派生类中需要对新增加的成员进行初始化,则需要加入派生类的构造函数。同样派生类也需要添加析构函数来实现一些结束工作。

       当创建对象时,编译系统会自动调用构造函数。当撤销对象时,编译系统会自动调用析构函数。当创建派生类的对象时,首先执行基类的构造函数,然后执行派生类的构造函数。当撤销对象时,则先执行派生类的析构函数,然后再执行基类的析构函数。

例子:

#include"iostream.h"    

class A     //定义一个类    

{    

     public:

        A()        //类的构造函数            

        {

                cout<<"基类的构造函数"<<endl;

        }            

        ~A()     //类的析构函数            

                cout<<"基类的析构函数"<<endl;

        }    

};    

class B:public A    //派生类    

        public:            

        B()                    //派生类的构造函数            

                cout<<"派生类的构造函数"<<endl;

        ~B()                 //派生类的析构函数            

                cout<<"派生类的析构函数"<<endl;

        } 

}; 

void main() 

{

        B p;                //派生类的对象    

}

输出:

      基类的构造函数

      派生类的构造函数

      派生类的析构函数

      基类的析构函数

            当类内包含其他对象时,将这个类对象叫做内含类对象,该对象的初始化工作必须放在构造函数的初始化列表中,内含类对象和包含它的类对象的构造函数顺序是:先是内含类的构造函数,然后是外部类的构造函数。

继续阅读