首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序; #include using namespace std; class B{ public: virtual void show(){cout
有如下程序; #include using namespace std; class B{ public: virtual void show(){cout
admin
2020-04-07
89
问题
有如下程序;
#include
using namespace std;
class B{
public:
virtual void show(){cout<<"B";)
};
class D:public B{
public:
void show(){cout<<"D";}
};
void fun1(B*ptr){ptr->show();}
void fun2(B&ref){ref.show();}
void fun3(B b){b.show();}
int main(){
B b,*p=new D;
D d;
fun1(p);
fun2(b);
fun3(d);
return 0;
}
程序的输出结果是( )。
选项
A、BBB
B、BBD
C、DBB
D、DBD
答案
C
解析
此题考查的是虚函数与多态性。在成员函数的声明前面加上virual关键字,即可把函数声明为虚函数;在C++中,一个基类指针可以用于指向它的派生类对象,而且通过这样的指针调用虚函数时,被调用的是该指针实际所指向的对象类的那个重定义版本。此题中,fun1()和fun2()的形参分别是基类的指针和引用,给fun1()传入的实参是指向派生类对象的指针p,fun1()将调用D类中的show()输出字符‘D’;给fun2()出入的实参是基类对象,fun2()调用类B中的show()输出字符‘B’;fun3()由于形参是基类对象,调用的始终都是基类的show(),输出字符‘B’。故最终输出结果是DBB。
转载请注明原文地址:https://kaotiyun.com/show/Ok8p777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
数据库模型提供了两个映像,它们的作用是()。
按照标识符的要求,下列选项中,()符号不能组成标识符。
关系数据库管理系统能实现的专门关系运算包括( )。
运算符重载是对已有的运算符赋予多重的含义,所以()。
下列选项中不符合良好程序设计风格的是()。
有如下数组声明:intnum[10];,下标值引用错误的是
下列叙述中正确的是
关键字unsigned不能修饰的类型是
空字符串的长度是_____。
检查软件产品是否符合需求定义的过程称为()。
随机试题
禁用碳酸氢钠洗胃的中毒患者是
小波的父母平时鼓励他养成良好的学习习惯,督促他按时完成作业。在报特长班时也会征求他的意见。小波在学校遵守纪律,期末选三好学生时很多同学都投了他的票。小波的家庭教养模式属于()。
Agroupofscientistsrowingtowardthecenterofalakesawsomethingshocking.Theyturnedbackasfastastheycould.Whatha
任何单位和个人发现传染病病人或者疑似传染病病人时,都应当及时报告给
痰液中出现支气管管型常见于
肺源性心脏病发病的关键环节是
对一个企业而言,收入与费用一般都遵循配比原则,营业外收入和营业外支出也不例外。()
关于文学作品中的典故,下列解释错误的是()。
社会保障:是国家和社会依据一定的法律和规定,通过国民收入的再分配,对社会成员的基本生活权利予以物质保障的一系列社会安全制度。下列不属于社会保障的是( )。
VB中有3个键盘事件:KeyPress、KeyDown、KeyUp,若光标在Textl文本框中,则每输入一个字母
最新回复
(
0
)