首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下的类声明: #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
44
问题
有如下的类声明:
#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);
cc.disp();
rb.disp();
return 0;
}
运行这个程序的输出是
选项
A、ACC
B、ACB
C、BCC
D、BCB
答案
A
解析
程序定义了类AA,成员函数disp是虚函数;类BB公有继承AA,重新定义了函数disp,由虚函数的性质可知,即使BB中未使用virtual修饰disp,函数disp仍然是虚函数;类CC公有继承了BB,同样重新定义了虚函数disp;main函数中定义了BB类对象bb,CC类对象cc,BB类引用rb,rb被初始化指向cc;然后调用plot函数,由于plot函数的形参是AA类对象a,不满足多态性中调用者必须要是引用或者指针类型的条件,所以无论实参是bb或cc,a.disp()调用的都是AA类中的函数disp,输出"A";cc.disp()显然调用的是类CC中的函数,输出"C";rb.disp(),由于rb是引用,指向的是类CC对象cc,所以这里由多态性可知调用的是CC类中的disp函数,输出"CC";程序输出结果为:"ACC";答案为A。
转载请注明原文地址:https://kaotiyun.com/show/VANp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
operator是运算符重载时必须使用的关键字,它和被重载的运算符连在一起,作为运算符函数的专用函数名,务必把该函数说明为【】的。
已知一个类Sample,()是定义指向类Sample成员函数的指针,假设类有三个公有成员:voidf1(int),voidf2(int)和inta。
下列关于break语句的叙述不正确的是()。
有如下程序:#include<iostream>usingnamespacestd;classpoint{intx,y;public:point(intvx,intvy)
有以下程序#include<iostream>usingnamespacestd;classMyClass{public:MyClass();~MyClass();St
在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是
下列对队列的叙述正确的是
派生类对基类的继承有三种方式:______、______,保护继承。
以下对模板的说明,正确的是()。
耦合和内聚是评价模块独立性的两个主要标准,其中【】反映了模块内务成分之间的联系。
随机试题
()是保障幼儿身体健康的第一道防线。
对于许某在缓刑期所犯之故意伤害罪,应当由下列哪个机关负责侦查:如果许某所犯之故意伤害罪是在原审判决宣告以前发生,而在其服刑期间才发现则该伤害案可以由下列哪个法院管辖:
下列会计工作中,属于管理会计范畴的是()。
用多水平法编制的弹性预算,主要特点是()。
filmindustrycinematograph
FrontPage2003中,建立超链接后,可以修改链接,但不可以取消链接。
______表示由主机送往打印机的选通信号。当其有效时,打印机接收______送来的8位并行数据。
窗体有多个部分组成,每个部分称为一个"【】"。
GlobalWarmingFewpeoplenowquestiontherealityofglobalwarminganditseffectsontheworld’sclimate.Manyscientists
【B1】【B15】
最新回复
(
0
)