首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
若有以下程序: #include <iostream> using namespace std; class A { protected: int a; public: A() {
若有以下程序: #include <iostream> using namespace std; class A { protected: int a; public: A() {
admin
2010-03-29
64
问题
若有以下程序: #include <iostream> using namespace std; class A { protected: int a; public: A() { a=10; } }; class A1 : public A { public: A1() { a=a+1; } }; class A2 : public A { public: A2 () { a=a+2; } }; class B : public A1,public A2 { public: B(){} void print() { cout<<a<<end1; } }; int main ( ) { B obj; obj.print(); return 0; } 程序运行后的输出结果是( )。
选项
A、产生语法错误
B、11
C、12
D、10
答案
1
解析
本题考核派生类的定义和使用。本程序有语法错误,这是由于类B中的 print函数中的语句“cout<<a<<end1;”要输出成员a的值,从而产生了二义性。分析如下:程序中定义了类A,类A1和类A2都是在类A的基础上以公有继承方式产生的派生类,而类B是在类A1和类A2的基础上经过多重继承方式产生的派生类,所以在类B中成员a有两个拷贝,系统无法区分是从A1继承过来的a,还从A2类继承过来的a。
修改方法有以下两种:
①在被访问的成员加上作用域分辨符“::”。将类B中的print()函数体中语句改为:
cout<<A1::a<<end1;
或
cout<<A2::a<<end1;
但两者的输出结果不同,前者输出11,而后者输出12。
②采用虚基类的方法。就是在定义A1和A2时,在派生方式前加上关键词“virtual”。
转载请注明原文地址:https://www.kaotiyun.com/show/yXjp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。#include#defineN10voidfun(intx[N]){inti=0;while(i<N)scanf("%d",___);}在程序中下划线处应填入
以下叙述中正确的是
有两个关系R和S如下:则由关系R得到关系S的操作是()。
若有以下函数首部intfun(doublex[10],int*n)则下面针对此函数的函数声明语句中正确的是
不属于结构化程序基本结构的是()。
以下叙述中错误的是()。
算法的空间复杂度是指()。
设一棵满二叉树共有15个结点,则在该满二叉树中的叶子结点数为()。
设有下面的定义:structst{inta;floatb;)d;int*p;要使p指向结构变量d中的a成员,正确的赋值语句是()。
C语言中标准库函数fputs(str,fp)的功能是()。
随机试题
建设性冲突
右心导管检查时全肺阻力的正常值为(单位:达因·秒·厘米﹣5)
实喘痰浊阻肺证痰涌气急者适宜
急性心力衰竭出现水肿、钠滞留时,可以选用的治疗药物是()
患儿,1岁1个月。突发高热4天,神智正常,现热已退,肌肤出现玫瑰色丘疹,皮疹始发于躯干,很快延及全身,肤无痒感。舌质偏红,苔薄少津,指纹淡紫。其治法是()
牡蛎的功效是龙骨的功效是
至今,研究者发现在胚胎及胸腺组织中蕴含的生长因子有40种之多,其中多种因子已被证明可以成为促进皮肤生长的目标组织,对皮肤细胞的新陈代谢及分裂繁殖有重要促进作用,倘能以涂面霜的方式将这些生长因子填补到中年人的皮肤组织之内,对维持皮肤组织的健康及延缓皮肤老化将
录入数据资料时,通常可用逻辑型和数值型变量录入来防止数据录入错误。
企业人力资源发展战略模式包括()。
Access数据库的各对象中,实际存储数据只有()。
最新回复
(
0
)