首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序; #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
59
问题
有如下程序;
#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全国计算机二级
相关试题推荐
下列程序的输出结果是()。#include<iostream.h>main(){intm=5;if(m++>5)cout<<m;elsecout<<m--;}
最简单的交换排序方法是()。
通常拷贝构造函数的参数是
有如下程序#include<iostream>usingnamespacestd;classBase{protected:Base(){cout<<’A’;}Base(charc){cout<<c;)
下面的描述中,正确的是()。
当需要将一个函数boolisnumber(charc)声明为内联函数时,则此内联函数的函数原型为()。
在程序设计阶段应该采取______和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,继而用某种程序设计语言写成程序。
面向对象程序设计思想的主要特征中不包括
C++是一种面向对象的程序设计语言,它充分支持面向对象思想中的三个主要特征是______性;_______性和_______性。
关键字unsigned不能修饰的类型是
随机试题
功能健脾调中,调理脾胃气滞的药物是()
根据《中华人民共和国水污染防治法》对饮用水水源保护区的有关规定,下列说法中正确的是()。
破产财产不足以清偿同一顺序的清偿要求的,按照比例分配。()
成本计算方法一经选定,一般不得随意变动。()
面试考官直接打出分数,这种情况属于()。
()水平决定教育的规模和速度。
如果你进入公安队伍后发现工作环境、工作性质跟你想象的相差很远。你会怎么做?
下列作业调度算法中最短的作业平均周转时间是()。
设有关系R(A,B,C)和S(C,D)与关系代数表达式() πA,B,D(σR.C=S.C(R×S))等价的SQL语句是
Ironically,theintellectualtoolscurrentlybeingusedbythepoliticalrighttosuchharmfuleffectoriginatedontheacademic
最新回复
(
0
)