首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序: #include using namespace std; class Base{ int m; public: Base(){ cout
有如下程序: #include using namespace std; class Base{ int m; public: Base(){ cout
admin
2020-07-23
32
问题
有如下程序:
#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://jikaoti.com/ti/AJl0FFFM
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
有如下类定义:classSample{public:Sample(intx):ref(x){}//1private:Sample(){ref=0;}//2staticintval
有如下类定义:classMyClass{public:MyClass(doubled=0.0):val(d){}______________/
下列关于重载运算符的说法正确的是:
由于常对象不能被更新,因此()。
下列关于this指针的叙述中,正确的是
关于函数重载,下列叙述中错误的是()。
用于定义类的必不可少的C++关键字是
若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是()。
计算机软件包括
下列选项中,正确的C++表达式是
随机试题
正式验收一般应该在()之后进行。
下列确诊DIC的化验值,哪项是错误的
治疗水肿主张用攻逐、发汗、利尿的是
可作片剂崩解剂的是
在利用调值公式法进行动态结算时,首先应( )。
一个国家的基本通货和法定的计价结算货币是()。
血小板具有()作用。
垃圾分类就是将垃圾分门别类地投放,并通过分类清运和回收使之重新变成资源。垃圾分为可回收垃圾、厨余垃圾、有毒有害垃圾和其他垃圾。下列关于垃圾分类的处理,说法错误的是:
由于石化能源存在污染及蕴藏量减少的问题,新能源一直被视为重要替代品,其中核能更是各国开发的________。但日本核事故却引起大家对核能安全的________,各国政府无不希望在短期内找出更安全、经济的新能源,以减少对石油长期的依赖。依次填入画横线部分最恰
近代以来,中国人民对帝国主义的认识经历了两个阶段。第一阶段是表面的感性认识阶段,这典型地表现在义和团等笼统的排外主义的斗争上。第二阶段才进入到理性的认识阶段,即看出了帝国主义内部和外部的各种矛盾,并看出了帝国主义联合中国买办阶级和封建阶级以压榨中国人民大众
最新回复
(
0
)