首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序: #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
32
问题
有如下程序:
#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://kaotiyun.com/show/Q7yp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
有如下的程序: #include<cstring> #include<iostream> using namespace std; class MyString { pub
下列关于模板形参的描述中,错误的是
使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为:Constructor,i=0,Destructor注意:错误的语句在//******error******的下面,修
使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:(1)类CBase有一个常数变量Number1,在构造函数时对其初始化,请在注释//********1*****
使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成列操作,将类的定义补充完整,实现以下功能:(1)完成CBook类构造函数,对整型变量ID和作者Author进行赋值,请在注释//********1*****
住关系数据库中,用来表示实体间联系的是
若在表达式y/x中,’’/’’是作为成员函数重载的运算符,则该表达式还可以表示为()。
有如下的运算符重载函数定义:doubleoperator+(inti,intk){returndouble(i+k);}但定义有错误,对这个错误最准确的描述是()。
下列运算符函数中肯定不属于类FunNumber的成员函数的是()。
随机试题
A、Bytakingahandgun.B、Byhiringabodyguard.C、Bybringinglargedogs.D、Bydisguisinghimselfasothers.C短文指出。为了防止被抢,讲话者在出诊
行政处罚实施机关应当依照法律、法规、规章的规定,建立并完善回避、公开、告知、()等程序制度;对重大或者复杂案件行使行政处罚裁量权,应当由行政处罚实施机关负责人集体讨论决定。
A.角色行为缺如B.角色行为冲突C.角色行为减退D.角色行为强化E.角色行为异常否认自己有病,不及时就医是患者的
重新评标的专家应从国家级专家库中重新随机抽取,国家级专家不足时,可由地方级专家库中补充,但国家级专家不得少于()。
当建设工程施工合同双方发生争议,需依法确定仲裁机构时,应实行( )。
小王在5年前观看了一部电影,观赏结束后发表的影评给予了该电影很高的评价。5年后,小王又观看了这部电影,评价却与5年前的评价完全相反。由此可以推知()。
在某次税务检查后,四个工商管理人员有如下结论:甲:所有个体户都没纳税。乙:服装个体户陈老板没纳税。丙:个体户不都没纳税。丁:有的个体户没纳税。如果四人中只有一人断定属实。则以下哪项是真的?
中国梦的本质是国家富强、民族振兴、人民幸福。国家富强是指()
计算并填写下表:【5】
以下不能正确计算代数式sm2()值的C语言表达式是
最新回复
(
0
)