首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序: #include<iostream> #include<string> using namespace std; class Publication{ public: Publication(string n="Unknown"):name(
有如下程序: #include<iostream> #include<string> using namespace std; class Publication{ public: Publication(string n="Unknown"):name(
admin
2021-02-22
15
问题
有如下程序:
#include<iostream>
#include<string>
using namespace std;
class Publication{
public:
Publication(string n="Unknown"):name(n){}
const string getName()const{return name;}
virtual const string getType()const{return"Unknown";}
private:
string name;
};
class Book:publicPublication{
public:
Book(string name):Publication(name){}
virtual const string getType()const{return"Book";}
};
void showPublication(Publication&p){
cout<<p.getType()<<":"<<P.getName()<<endl;
}
int main(){
Book book("C++");
showPublication(book);
return0;
}
运行时的输出结果是( )。
选项
A、Book:C++
B、Book:Unknown
C、Unknown:C++
D、Unknown:Unknown
答案
A
解析
C++中,多态调用必须满足两个条件:被调用的成员函数是虚函数;必须通过基类类型的引用或指针进行函数调用。
题意的main()函数中首先定义一个。Book类对象,对象名为book,在构造book对象时,程序过程如下:首先调用Book类的构造函数.传入参数“C++”,在构造函数执行函数体前,再调用基类Publication的默认构造函数:传入字符串“C++”,基类构造函数在成员初始化列表中,使用传入的参数“C++”为name赋值;此时继承于基类的成员:name存放字符串“C++”。
然后main()函数调用showPublication()函数,传入book对象:showPublication()函数接收Publication类对象的引用p,然后调用p.getType()和p.getName()输出。由于getType()成员函数属于虚函数,p属于基类对象的引用,所以通过p调用getType()函数满足多态调用,执行p实际引用对象类型的getType(),即Book类的getType(),输出:“Book”;而getName()不是成员函数,所以不满足多态调用,执行基类的成员函数getName(),输出name:“C++”。综上,程序输出:Book:C++。本题答案为A选项。
转载请注明原文地址:https://jikaoti.com/ti/6Fl0FFFM
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
有如下程序:#include<iostream>using namespace std;class test{private: int a;public: test(){cout<<"constructor"<<endl;} test(int a){
有以下类定义 clas sMyClass { public: My Class() { cout<<1;} }; 则执行语句MyClassa,b[2],*p[2];后,程序的输出结果是
有如下类模板定义:template<typenameT>classBigNumber{longn;public:BigNumber(Ti):n(i){}BigNumberoperator+(BigN
有如下程序: #include<iostream> using namespace std; class BASE { public: ~BASE(){cout<<"BASE";} }; cl
下列数据模型中,具有坚实理论基础的是
使用VC6打开考生文件夹下的源程序文件modi2.cpp。请实现函数fun(doubleb[],intlen)的如下功能:(1)b[]是一个数组,长度为len;(2)b[0]=0,b[1]=1;(3)b[i+2]=b[i]+b[i+1
使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行时有错,请改正程序中的错误,使该程序的输出结果为:100注意:错误的语句在//*****error******的下面,修改该语句即可。#includestatic
使用VC6打开考生文件夹下的源程序文件modi2.cpp。请完成函数fun(char*data),此函数的功能是,找出字符串数组中最小的ASCII值,如果有相同变量,则输出最后一个所在的位置;如果字符串为空,则返回-1;或者不存在时也返回-1。注
数据库管理系统的基本功能不包括
下列运算符函数中肯定不属于类FunNumber的成员函数的是()。
随机试题
下面哪项不属于单基因遗传病
位于后发际正中直上0.5寸,旁开1.3寸,当斜方肌外缘凹陷中的腧穴是
根据我国的献血法,有关医疗机构采血说法正确的是
下列说法错误的是()
根据《中华人民共和国合伙企业法》的规定,下列关于普通合伙企业合伙事务执行的表述中,正确的有()。
我国商业银行临时存款账户的有效期限最长不得超过1年。()
龋齿是人类广泛流行的一种慢性疾病,是在外界各种因素的共同影响下,牙齿本身的牙釉质、牙本质或牙骨质发生的一种进行性破坏的疾病。()
()对于校园相当于手术室对于()
Completethefollowingsentences.ForeachblankuseONEORTWOWORDSfromthepassage.Nowmostpeoplelivein________citiesw
在结构化程序设计中,模块划分的原则是______。
最新回复
(
0
)