首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序: #include using namespace std; class Base{ int m; public: Base(){ cout
有如下程序: #include using namespace std; class Base{ int m; public: Base(){ cout
admin
2019-04-18
57
问题
有如下程序:
#include
using namespace std;
class Base{
int m;
public:
Base(){ cout<<"B1"; }
Base(int m1): m(m1){ cout<<"B2"; }
};
class Mid1: virtual public Base{ };
class Mid2: virtual public Base{ };
class Derived: public Mid2, public Mid1{
public:
Derived(int n): Base(n){ cout<<"D"; }
};
int main(){
Derived obj(5);
return 0;
}
运行上述程序的输出结果是
选项
A、B1B1D
B、B1B2D
C、B1D
D、B2D
答案
D
解析
虚继承中,无论虚基类出现在继承层次中的任何地方,总是在构造非虚基类之前构造虚基类;程序中首先构造虚基类Base,调用Base的构造函数Base(int m1),输出"B2";然后构造非虚基类,按照Derived的派生列表顺序,首先构造Mid2部分,忽略Mid2构造函数初始化列表中Base的初始化式,再构造Mid1部分,同样忽略Base的初始化式,最后构造Derived部分,执行函数体,输出"D";整个程序结果为:"B2D";答案为D。
转载请注明原文地址:https://www.kaotiyun.com/show/NpAp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
下面重载乘法运算符的函数原型声明中错误的是()
类定义如下:classTestClass{public:TestClass(){cout<<1;}};则执行语句TestClassa,b[2],*p[2];后,程序的输出结果是()。
operator是运算符重载时必须使用的关键字,它和被重载的运算符连在一起,作为运算符函数的专用函数名,务必把该函数说明为______的。
如下程序:#include<iostream.h>voidmain(){charstr[2][5]={"1234","5678"),*p[2];inti,j,s=0;for(i=0;i<2;i++)p[
非成员函数应该声明为类______函数才能访问该类的私有成员。
对于一个类定义,下列叙述中错误的是()。
下列有关函数重载的叙述中,错误的是()
下列关于类模板的模板参数的叙述中,错误的是
下列字符串中不能作为C++标识符使用的是
下列关于栈的叙述中,正确的选项是()。A)在栈中只能删除数据B)在栈中只能插入数据C)栈是先进先出的线性表D)栈是先进后出的线性表
随机试题
2012年3月被中央文明委授予“当代雷锋”荣誉称号的是()。
对老年复发性腹股沟疝,最好的手术方法是
现行宪法规定,()处理全国人大常委会的重要日常工作
在法律没有特别规定或合同没有特殊约定时,下列哪些权利人可以取得原物所生自然孳息的所有权?()
当承包人的工程质量缺陷处于萌芽状态时,监理工程师应()。
确保受理贷款申请的合理性,在必要情况下,业务人员还应将有关书面材料送交风险管理部门征求意见,或者按程序汇报主管行领导。()
中国古代传统文化中“岁寒三友”和“四君子”实际上是指()种植物。
在文件夹下HUN文件夹中建立一个新文件夹CALCUT。
「田中先生はもうすぐいらっしゃいますよ。」「そうですか。それでは、すみませんが、ここで________。」
Whichwordistheoddoneout?London,Paris,Dublin,TheHague,Vienna
最新回复
(
0
)