首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序: #include #include using namespace std; class Publication{ public: Publication(string n="Unknown")
有如下程序: #include #include using namespace std; class Publication{ public: Publication(string n="Unknown")
admin
2017-02-18
27
问题
有如下程序:
#include
#include
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:public Publication{
public:
Book(string name):Publication(name){}
virtual const string getType()const{return"Book";}
};
void showPublication(Publication&p){
cout<
}
int main(){
Book book("C++");
showPublication(book);
return 0;
}
运行时的输出结果是( )。
选项
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/fIAp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
结构化程序设计主要强调的是
关于友元的概念错误的是()。
下列关于C++函数的描述中正确的是()。
在下面四个选项中,()是用来声明虚函数的。
在C++语言中,封装是借助于什么达到的?
当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为【】。
当使用fstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为()。
下列语句段将输出字符’*’的个数为inti=100;while(1){i--;if(i==0)break;cout,,’*’;}
作为成员函数重载的运算符,第一操作数就是参数表中隐含的________所指向的对象,因此并不显示地出现在参数表中。
将关键字const写在函数头之后,函数体之前,说明该函数是一个const成员函数。此时const不是指定函数的返回值,而是修饰【 】指针。
随机试题
A.中性粒细胞B.嗜酸性粒细胞C.嗜碱性粒细胞D.淋巴细胞E.单核细胞正常成人外周血中,含量最多的白细胞是
关于利尿药,正确的是
体外循环时心脏停搏液最常用的灌注方法是()
甲、乙约定:甲将100吨汽油卖给乙,合同签订后三天交货,交货后十天内付货款。还约定,合同签订后乙应向甲支付十万元定金,合同在支付定金时生效。合同订立后,乙未交付定金,甲按期向乙交付了货物,乙到期未付款。对此,下列哪一表述是正确的?(2010年卷三14题
下列有关中国人民银行、银监会的说法不正确的是?
有关地震影响系数的下列说法中错误的是()。
某金属配件加工厂的滤芯抛光车间厂房内设有一地沟,该厂房采取的下列防爆措施中,不符合要求的是()。
通过招标投标方式选择物业管理企业的,招标人应当按照以下()规定的时限完成物业管理招标投标工作。
通常情况下,一个外中断服务程序的第一条指令是STI,其目的是( )。
Inthepast,youngpeopleinJapanwereexpectedtotakeonresponsibilitiestosupporttheirparentsandgrandparents.Nowthey
最新回复
(
0
)