首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序: #include <iostream> using namespace std; class Base { public: void output() { cout<<1; } virtua
有如下程序: #include <iostream> using namespace std; class Base { public: void output() { cout<<1; } virtua
admin
2017-10-17
24
问题
有如下程序: #include <iostream> using namespace std; class Base { public: void output() { cout<<1; } virtual void Print() { cout<<’B’; } }; class Derived: public Base { public: void output() { cout<<2; } void Print() { cout<<’D’; } }; int main() { Base *ptr=new Derived; ptr->output(); ptr->Print(); delete ptr; return (); }程序的输出结果是
选项
A、1B
B、1D
C、2B
D、2D
答案
B
解析
本题考查的知识点是:虚函数与多态性。在成员函数声明的前面加上virtual修饰,即把该函数声明为虚函数。在C++中,一个基类指针(或引用)可以用于指向它的派生类对象,而且通过这样的指针(或引用)调用虚函数时,被调用的是该指针(或引用)实际所指向的对象类的那个重定义版本。本题中,就是通过基类Base的指针ptr指向new出来的派生类Derived对象,从基类的定义中可以看出,output()函数是普通成员函数,而Print()函数是虚函数。所以,通过ptr指针调用的output()是基类中的output(),而通过它调用的Print()则是派生类中的Print()。故本题的输出结果是1D,应该选择B。
转载请注明原文地址:https://kaotiyun.com/show/WXAp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
下列运算符中,不能重载的是
下列是模板声明的开始部分,其中正确的是
下列程序的运行结果为#include<iostream.h>voidprint(doublea){cout<<++a;}voidprint(inta,intb){
下面关于数组的初始化正确的是
下列对模板的声明中,正确的是()。
以下关于静态成员变量的叙述不正确的是
C++中的多态分为运行时的多态性及【 】时的多态性。
下列说法错误的是( )。
将一个函数声明为一个类的友元函数必须使用关键字______。
随机试题
贫血
一间谍案件中,犯罪嫌疑人在被侦查机关逮捕后,要求委托黄律师作为其侦查阶段的法律顾问,现在黄律师要求会见犯罪嫌疑人,需要履行哪些不同于一般刑事案件的程序?()
B企业全年需要甲种材料2000公斤,每公斤买价20元,每次订货费用50元,单位储存成本为单位平均存货金额的25%。该材料的供货方提出,若该材料每次购买数量在1000公斤或1000公斤以上,将享受5%的数量折扣。要求:通过计算,确定该企业应否接受供货
以下各时期属于小儿生长发育最迅速的是
烧伤感染中最主要的病原菌侵入途径
选择体育教学方法的依据是什么?
在常温常压下具有特殊臭味的淡蓝色有毒气体是()。
一帆风顺的旅途只能酿就________的思维,而人生中的________从来都是经历了颠簸与坎坷之后才赫然出现。填入划横线部分最恰当的一项是()。
根据《联合国海洋法公约》,下列四幅示意图中,关于三个区域位置,表示正确的是:
FarewellSpeech"Specialneeds"Commonlydefinedbywhatachildcan’tdoBymilestonesunmetBy【T1】________
最新回复
(
0
)