有如下程序: ##inc1ude <iostream> using namespace std; class Publication{//出版物类 char name[30]; public: Publica

admin2016-11-23  15

问题 有如下程序:
    ##inc1ude <iostream>
    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”书”;}就会覆盖基类中的虚常成员函数*getType()const{ return”未知类型”;},所以在主函数中调用函数showPublication(book)时,getType()函数的输出的结果是“书”,getName0函数的输出结果为“精彩人生”。
转载请注明原文地址:https://kaotiyun.com/show/pzAp777K
0

最新回复(0)