首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序: #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
50
问题
有如下程序: #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全国计算机二级
相关试题推荐
静态成员函数不能说明为
下列叙述中正确的是
根据下列程序的执行结果,可以断定划线部分的修饰符应为【 】。执行结果:i9afootballiscreated.afootballiscreated.i=10afootballisdestroyed.afootballis
在C++语言中每个类都有一个______指针,该指针指向正在调用成员函数的对象。
下列对模板的声明中,正确的是()。
多数运算符既能作为类的成员函数重载,也能作为类的非成员函数重载,但[]运算符只能作为类的______函数重载。
下列不属于软件工程三要素的是( )。
以下不能正确进行字符串赋值初值的语句是()。
下面关于运算符重载的描述错误的是()。
下列字符串中,正确的C++标识符是()。
随机试题
以下不按五行相生顺序排列的是
中度缺钠时,下列哪项是恰当的
治疗颈痈初期,应首选
支架、模板施工要有施工图,支架设计要经过计算验算确保安全。高于8m和跨度大于( )m的支撑体系要编制专项方案,并经专家评审会议通过后方可实施。
已采用计算机代替手工记账的单位,其会计档案保管期限可以按照《会计档案管理方法》的规定执行。()
下列关于网络事务所的说法中,不正确的是()。
根据《商业银行法》的规定,商业银行贷款时应当()。
践行“节约”职业道德规范,对从业人员的根本要求是()。
A.whileB.rangeC.furthermoreD.intoA.Itwillfit【T13】______thesmallestspaceB.【T14】______themachineisper
Thesentence"Somepeopledonothingbutbreakthewholeprogram"maytellusthat______.WhichofthefollowingisNOTtrue?
最新回复
(
0
)