首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下的类声明: #include using namespace std; class AA{ public: virtual void disp(){ cout
有如下的类声明: #include using namespace std; class AA{ public: virtual void disp(){ cout
admin
2015-07-22
61
问题
有如下的类声明:
#include
using namespace std;
class AA{
public:
virtual void disp(){ cout<<’A’; }
};
class BB: public AA{
public:
void disp(){ cout<<’B’; }
};
class CC: public BB{
public:
virtual void disp(){ cout<<’C’; }
};
void plot(AA &a){ a.disp(); }
int main(){
BB bb;
CC cc;
BB &rb=cc;
plot(bb);
plot(cc);
rb.disp();
return 0;
}
运行这个程序的输出是
选项
A、AAC
B、AAB
C、BCC
D、BCB
答案
C
解析
程序定义了类AA,成员函数disp()为虚函数;类BB公有继承AA,重新定义了disp()函数;类CC公有继承BB,同样重新定义了disp()函数;类BB中,虽然disp()未用virtual修饰,但是由虚函数性质可知,BB中的disp()函数仍然是虚函数;main()函数中,创建BB对象bb,CC对象cc,使用cc初始化BB类引用rb,然后调用plot函数;plot函数的形参是AA类的引用,通过AA类引用调用disp函数,满足多态性条件,将根据引用所指对象的类型来决定调用哪个disp函数;所以plot(bb)调用类BB中的disp函数,plot(cc)调用CC中的disp函数;输出分别为:"B"、"C";另外由于rb为BB类引用,所指对象是cc,所以运行rb.disp()时调用的是CC中的disp()函数,输出"C",综上,程序输出为:"BCC";答案为C。
转载请注明原文地址:https://www.kaotiyun.com/show/IjNp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
下列声明语句中没有起到定义作用的是()。
在C++语言的结构化程序设计中,【】是程序的基本组成单元;在C++语言的面向对象设计框架中,【】是程序的基本组成单元。
下面程序的运行结果为#include<iostream.h>voidswap(int&a,intb){inttemp;temp=a++;a=b;
设有定义inta=1;floatf=1.2;charc=’a’;,则下列表示错误的是
下列关于运算符重载的叙述中,正确的是
在软件设计中,不属于过程设计工具的是
重载输入流运算符>>必须使用的原型为
以下叙述中正确的是
在一个容量为25的循环队列中,若头指针front=16,尾指针rear=9,则该循环队列中共有【】个元素。
随机试题
字符串"8+a=\tb\n\r"的长度为
简述国际收支半衡表的内容。
下列选项中,属于借款类会计科目的有
引起单纯性下肢静脉曲张的主要原因是
当前我国产业结构调整的中心任务是要形成以高新技术产业为先导、基础产业和制造业为支撑、()全面发展的产业格局。
用盈余公积转增资本不影响所有者权益总额的变化,但会使企业净资产减少。()
设备联合试运转费属于()。
社区工作的目标中属于实现过程目标的是()。
推进中国特色社会主义法治体系建设,首先是()
Inthepast,theParkServicefocusedonmakingthebigscenicparksmore【21】andcomfort-ablefortourists.Roadswerepavedto
最新回复
(
0
)