首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序: #include using namespace std; class Base1{ public: Base1(){ } ~Base1(){ cout
有如下程序: #include using namespace std; class Base1{ public: Base1(){ } ~Base1(){ cout
admin
2015-07-22
15
问题
有如下程序:
#include
using namespace std;
class Base1{
public:
Base1(){ }
~Base1(){ cout<<"b1"; }
};
class Base2{
public:
Base2(){ }
~Base2(){ cout<<"b2"; }
};
class Derived: public Base2,public Base1{
public:
Derived(){ }
~Derived(){ cout<<’d’; }
};
int main(){
Derived obj;
return 0;
}
运行这个程序的输出是
选项
A、b1b2d
B、b2b1d
C、db1b2
D、db2b1
答案
C
解析
派生类构造函数都是先调用基类构造函数,再根据声明次序定义数据成员,另外对于多继承,派生类的构造函数初始化列表中,基类构造函数是按照基类在派生类的派生列表中出现的次序调用的;由于Derived类的派生列表中,Base2在前,所以应该先调用Base2的构造函数,再调用Base1的构造函数;销毁派生类对象时,总是按照构造函数运行次序的相反顺序调用析构函数,首先运行派生类析构函数,然后按继承层次依次向上调用各基类函数;所以Derived对象销毁时,首先调用Derived的析构函数,接着调用Base1的析构函数,最后调用Base2的析构函数;输出结果为:"db1b2",答案为C。
转载请注明原文地址:https://kaotiyun.com/show/1yNp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
下列打开文件的表达式中,错误的是
下列运算符中不能在C++中重载的是
将E-R图转换到关系模式时,实体与联系都可以表示成
在面向对象的程序设计中,下列叙述中错误的是
如果表达式--x/y中的“--”和“/”是作为友元函数重载的运算符,采用运算符函数调用格式,该表达式还可表示为
下面程序的运行结果是【】。#inChlde<iOStream>usingnamespacestd;classcount{staticintn;public:count()
程序设计语言的基本成分是数据成分、运算成分、控制成分和
下列选项中不属于软件生命周期开发阶段任务的是
对下列二叉树进行中序遍历的结果为【 】。
一棵二叉树中共有70个叶子结点与80个度为1的结点,则该二叉树中的总结点数为
随机试题
下列各加工过程中不属于化学工序的是()。
下列加横线的词解释错误的是【】
上消化道出血最常见的病因是
全血细胞减少的患者,有助于再生障碍性贫血诊断的选项是
以其原汁原味的水乡风貌和深厚的文化底蕴成为中国著名的古镇旅游胜地的是()。
被尊称为“乐圣”的是()。
恰恰基本舞步的音乐节奏都是2/3节拍。()
课程文件的三个层次不包括()
下列属于抢劫罪的犯罪构成要件的有()。
n个顶点的强连通图至少有(32)条边。
最新回复
(
0
)