理论教育 派生类构造和析构函数面向对象程序设计

派生类构造和析构函数面向对象程序设计

时间:2023-10-25 理论教育 版权反馈
【摘要】:在前面的章节中,我们已经介绍过构造函数和析构函数了。当基类构造函数有参数时,则派生类必须定义构造函数,提供将参数传递给基类构造函数的途径。在特殊情况下,派生类构造函数可以为空,只为起到为基类传递参数的作用。执行顺序是先执行派生类的析构函数,再执行基类的析构函数,其顺序与执行构造函数时的顺序正好相反。

派生类构造和析构函数面向对象程序设计

在前面的章节中,我们已经介绍过构造函数和析构函数了。在派生类中,也是需要用到这两个函数的,只是因为派生的原因,在定义时,需要照顾到基类。下面,我们简单介绍一下。

1.派生类的构造函数

要想产生派生类对象,必须先有基类对象,就像要有孩子必须先有父亲一样。构造函数负责对象的创建,但构造函数不能被继承,因此,派生类的构造函数必须通过调用基类的构造函数来初始化基类对象,然后再初始化自己,所以在定义派生类的构造函数时,除了对自己的数据成员进行初始化外,还必须设置必要的基类的构造函数所需的初始化值来完成基类对象的构造。如果派生类中还有子对象,即有数据成员为其他类的对象时,还应该包含子对象初始化的构造函数。派生类构造函数的一般格式为:

其中,< 参数总表> 包含了其后的各个参数表。

派生类构造函数的调用顺序如下:

(1)基类的构造函数;

(2)子对象类的构造函数(如果有的话);

(3)派生类构造函数。

在实际应用中,使用派生类构造函数时应注意以下问题:

(1)如果基类中有默认的构造函数或没有定义构造函数,则派生类构造函数的定义中可以省略对基类构造函数的调用。

(2)当基类构造函数有参数时,则派生类必须定义构造函数,提供将参数传递给基类构造函数的途径。在特殊情况下,派生类构造函数可以为空,只为起到为基类传递参数的作用。(www.daowen.com)

当派生类是多继承得到时,其构造函数的一般格式为:

多继承下派生类的构造函数与单继承下的构造函数类似,唯一不同的是它需要负责其所有基类构造函数的调用,同时必须包含完成所有基类初始化所需的参数个数。

多继承派生类构造函数的执行顺序是:

(1)基类的构造函数,各基类构造函数的执行顺序取决于定义派生类时,指定的各基类的顺序,而与派生类构造函数中定义的成员初始化顺序无关。

(2)子对象类的构造函数(如果有的话)。

(3)派生类构造函数。

2.派生类的析构函数

当对象被销毁时,派生类的析构函数被调用执行。由于析构函数也不能被继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用。执行顺序是先执行派生类的析构函数,再执行基类的析构函数,其顺序与执行构造函数时的顺序正好相反。

【例5.4】以下程序简单地演示了构造函数和析构函数的执行顺序:

在记忆构造函数和析构函数的执行顺序时,可将构造函数理解为进栈,将析构函数理解为出栈。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈