有如下类声明: class Base1{ }; class Base2{ }; class Derived: public Base2,public Base1{ }; 在一个 Derived 对象消亡时,析构函数被调用的顺序

admin2021-05-06  30

问题 有如下类声明:
     class Base1{ };
     class Base2{ };
     class Derived: public Base2,public Base1{ };
在一个 Derived 对象消亡时,析构函数被调用的顺序是

选项 A、~Derived、~Base1、~Base2
B、~Derived、~Base1、~Base2
C、~Base1、~Base2、~Derived
D、~Base2、~Base1、~Derived

答案A

解析 C++中,派生类构造函数都是先调用基类构造函数,再根据声明次序定义数据成员,另外对于多继承,派生类的构造函数初始化列表中,基类构造函数是按照基类在派生类的派生列表中出现的次序调用的;而析构函数是按构造函数运行顺序的逆序进行调用的,可知题目中析构函数的调用顺序为:派生类Derived的析构函数,Base1的析构函数,Base2的析构函数;答案为A。
转载请注明原文地址:https://jikaoti.com/ti/WIh0FFFM
0

最新回复(0)