首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序; #inc1ude<iostream> using namespace std; class B{ public: virtual void show() {cout
有如下程序; #inc1ude<iostream> using namespace std; class B{ public: virtual void show() {cout
admin
2016-11-23
42
问题
有如下程序;
#inc1ude<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.show();}
void fun3(B b) {b.show(); }
int main() {
B b,*p=new D;
D d;
funl(p);
fun2(b);
fun3(d);
return 0;
}
程序的输出结果是( )。
选项
A、BBB
B、BBD
C、DBB
D、DBD
答案
C
解析
此题考查的是虚函数与多态性。在成员函数的声明前面加上virual关键字,即可把函数声明为虚函数;在C++中,一个基类指针可以用于指向它的派生类对象,而且通过这样的指针调用虚函数时,被调用的是该指针实际所指向的对象类的那个重定义版本。此题中,funl()和fun20的形参分别是基类的指针和引用,给funl()传入的实参是指向派生类对象的指针p,funl()将调用D类中的show0输出字符‘D’;给fun2()出入的实参是基类对象,fun2()调用类B中的show0输出字符‘B’;fun3()由于形参是基类对象,调用的始终都是基类的show0,输出字符‘B’。故最终输出结果是DBB。
转载请注明原文地址:https://kaotiyun.com/show/OzAp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
有以下程序:#inClUde<iostream>usingnamespacestd;ClassBase{public:Base(intx){a=x;
下面的程序段中,有()处错误。template<classT1,T2>T2func(T1a,b){return(a>b)?(a):(b);}
下列叙述中错误的是
下列关于虚基类的描述,错误的是
如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是
执行下面的程序段后,变量k的值为()。intk=3,s[2];s[0]=k;k=s[1]*10;
判断char型变量c是否为小写字母的正确表达式是
一个类的友元函数能够访问该类的
有如下程序:#include<iostream>usingnamespacestd;template<typenameT>Ttotal(T*data){Ts=0
在算法正确的前提下,评价一个算法的两个标准是【】。
随机试题
The18th-centuryEnglandisknownastheAgeof______inthehistory.
个体在冲突中只寻求自我利益的满足,而不考虑对他人的影响,这属于处理冲突行为意向中的
生产以婴幼儿为主要使用对象的劣药者,执法部门必须
患者症见发热,微恶风寒,头痛干咳,咽干舌燥,烦热口渴,舌红少苔,脉细数。宜选用方为
下列化学消毒剂的使用中错误的是
除合伙协议另有约定外,普通合伙企业存续期间,下列行为中,不必经全体合伙人一致同意的是()。
设X~N(0,1),则下列各式成立的有()。
设随机变量X在区间(1,2)上服从均匀分布,试求随机变量Y=e2χ的概率密度f(y).
AftertheargumentColinranawayand________since.
Theprojectwhichwillcost34millionyuandesignstobuildmorethan100homes,restaurantsandretailshopsaroundthecity.
最新回复
(
0
)