首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序; #include<iostream> using namespace std; class B{ public: virtual void show(){cout<<’’B’’;} };
有如下程序; #include<iostream> using namespace std; class B{ public: virtual void show(){cout<<’’B’’;} };
admin
2017-04-25
50
问题
有如下程序;
#include<iostream>
using namespace std;
class B{
public:
virtual void show(){cout<<’’B’’;}
};
class D:public B{
public:
void show(){cout<<’’D’’;}
};
void funl(B*ptr){ptr->show();}
void fun2(B&ref){ref.show0;}
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,funl()将调用D类中的show()输出字符‘D’;给fun2()出入的实参是基类对象,fun2()调用类B中的show()输出字符‘B’;fun3()由于形参是基类对象,调用的始终都是基类的show(),输出字符‘B’。故最终输出结果是DBB。
转载请注明原文地址:https://www.kaotiyun.com/show/d2Ap777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
若x和y是程序中的两个整型变量,则下列if语句中正确的是()。
数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的()。
为 int *p; 动态分配内存空间并且赋初始值0的语句是【 】。
将x+y*z中的“+”用成员函数重载,“*”用友元函数重载应写为______。
在软件设计中,不属于过程设计工具的是
有如下程序: #include<iostream> using namespace std; int main() { void function(double val); double val; fu
执行语句序列intx=10,&r=x;cout<<x<<’-’<<r<<endl;输出结果为______。
假定要访问一个结构指针p所指对象中的b指针成员所指的对象,则表示方法为【 】。
在面向对象的程序设计中,类描述的是具有相似性质的一组【】。
随机试题
委托人应当偿还()垫付的费用及其利息。
Tomwasdisappointed(失望的)thatmostoftheguests______whenhe______attheparty.
高氯酸滴定法配制时为什么要加人醋酐
下列关于肾积水的临床特点,不正确的是
妊娠16周,需终止妊娠,最常用的方法是
关于可转让国内信用证的表述中,正确的是()。
()对于入学相当于驾照对于()
有以下两段C语言程序代码:intfun1(unsignedshortsi)intfun2(unsignedshortsi){{return(si*256
容灾系统通常要采用各种容灾手段来防止灾难发生后的数据损失,以下容灾手段和保持业务持续性无关的是(42)。
Wisebuyingisapositivewayinwhichyoucanmakeyourmoneygofurther.Thewayyougoaboutpurchasinganarticleoraservi
最新回复
(
0
)