首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序: #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
50
问题
有如下程序:
#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<iostream>using namespace std;class test{private: int a;public: test(){cout<<"constructor"<<endl;} test(int a){
有如下的程序: #include<cstring> #include<iostream> using namespace std; class MyString { pub
有以下类定义 clas sMyClass { public: My Class() { cout<<1;} }; 则执行语句MyClassa,b[2],*p[2];后,程序的输出结果是
已知主函数中通过如下语句序列实现对函数模板swap的调用:inta[10],b[10];swap(a,b,10);下列对函数模板swap的声明中,会导致上述语句序列发生编译错误的是()。A)template<ty
有如下程序: #include<iostream> using namespace std; class BASE { public: ~BASE(){cout<<"BASE";} }; cl
有如下程序: #include<iostream> using namespace std; class Base { pubfic: Base(){cout<<"BB";
在数据库中,产生数据不一致的根本原因是
运算符函数调用格式的表达式“y/x++”与表达式“y.operator/(operator++(x,0))”的含义相同,由此可看出()。
下列关于new和delete运算符的叙述中,错误的是()。
下列字符串中不能作为C++标识符使用的是()。
随机试题
当事人对限制人身自由的行政强制措施不服而提起诉讼,下列关于本案管辖权的表述,正确的是()
患者,男性,41岁。因家庭纠纷服用乐果300ml后1小时入院。查体:中度昏迷,血压120/80mmHg,皮肤潮湿多汗,口中有大蒜味,心率52次/分,双肺底可闻及湿啰音。患者需行洗胃治疗,成人胃管插入的深度一般为
天南星治疗的病证是白芥子治疗的病证是
设立房地产开发企业,除应当符合有关法律、行政法规规定的企业设立条件外,还应具备的条件有()。
项目经理因特殊情况授权其下属人员履行其某项工作职责的,该下属人员应具备履行相应职责的能力,并应提前()天将上述人员的姓名和授权范围书面通知监理人,并征得发包人书面同意。
下列经济业务中,引起资产与负债同增同减的有( )。
中国共产党党员是中国工人阶级的有共产主义觉悟的先锋战士。()
甲对乙享有100万元的债权,乙对丙享有100万元的债权。因到期乙无力偿还甲的债权,又不及时行使对于丙的债权,甲提起代位权诉讼。甲行使代位权的性质()。
空气污染阻断了植物与昆虫间的正常交流,这一点对于像蜜蜂之类的传粉昆虫来说影响更大。虽然,单就蜜蜂种群数量因此而受到的破坏程度,现阶段还没有谁能够拿出一个完整的监测数据,但研究发现,常见的植物挥发性物质月桂烯极易被柴油机废气所破坏,而月桂烯的缺失会让蜜蜂在寻
下列叙述中,正确的是
最新回复
(
0
)