首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序; #include using namespace std; class B{ public: virtual void show(){cout
有如下程序; #include using namespace std; class B{ public: virtual void show(){cout
admin
2015-09-14
34
问题
有如下程序;
#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/kqNp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
以下程序的输出结果是#include<iostream.h>voidmain(){inti,j,x=0;for(i=0;i<2;i++){x++;
表达式c3=c1.operator+(c2)或c3=operator+(c1,c2)还可以表示为【】。
以下程序的输出结果是#include<iostream.h>voidmain(){charx=040;cout<<(X<<1);}
一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版本,此虚函数又称为
面向对象程序设计将数据和什么放在一起,作为一个相互依存、不可分割的整体来处理?
如果一个模板声明列出了多个参数,则每个参数之间必须使用逗号隔开,每个参数都必须重复使用关键字()。
下列引用的定义中,()是错误的。
一个关系中属性个数为1时,称此关系为
______是一种信息隐蔽技术,目的在于将对象的使用者和对象的设计者分开。
随机试题
根据《药品注册管理办法》,在药物临床试验中,所采用的具有足够样本量的随机盲法对照试验属于
根据《环境影响评价技术导则—地面水环境》,一般情况,海湾三级评价应调查评价工作期间的()。
以下项目中,属于原始凭证的填制要求的有()。
编制资产负债表时,根据间接填列法填列的项目是()。
菌斑性牙龈病(dentalplaque-inducedgingivaldisease)
设a1=2,an-1=(n=1,2,…).证明:级数收敛.
SANFRANCISCO—Theattackhadthehallmarksofsomethingresearchershaddreadedforyears:malicioussoftwareusingartificiali
Thebiggestdangerfacingtheglobalairlineindustryisnottheeffectsofterrorism,war,SARSandeconomicdownturn.Itisth
请在“答题”菜单下选择“字处理”命令,然后按照题目要求再打开相应的命令,完成下面的内容,具体要求如下:设置表格外框线为1.5磅蓝色双实线,内框线为1磅红色单实线。
Whatarethespeakersdoing?
最新回复
(
0
)