有如下程序: #include<iostrearn> using namespace std; class Publication{//出版物类 char name[30]; public: Publication(char *name="未知名称"){

admin2020-11-11  30

问题 有如下程序:
#include<iostrearn>
using namespace std;
class Publication{//出版物类
char name[30];
public:
Publication(char *name="未知名称"){
strcpy(this->name,name);
}
const char * getName()const{return name;}
virtual const char * getType()const{return"未知类型";}
};
class Book:public Publication{//书类
public:
Book(char *name):Publication(name){}
virtual const char * getType()const{return"书";{}
};
void showPublication(Publication &p){
cout<<p.getType()<<":"<<p.getName()<<endl;
}
int main(){
Book book("精彩人生");
showPublication(book);
return 0;
}
运行时的输出结果是(    )。

选项 A、未知类型:未知名称
B、未知类型:精彩人生
C、书:未知名称
D、书:精彩人生

答案D

解析 因为类Book继承自基类Publication,所以在类Book中的虚常成员函数* getType(){return"书";}就会覆盖基类中的虚常成员函数*getTrype()eonst{return"未知类型";},所以在主函数中调用函数showPublication(book)时,getType()函数的输出的结果是“书”,getName()函数的输出结果为“精彩人生”。
转载请注明原文地址:https://kaotiyun.com/show/aeyp777K
0

最新回复(0)