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

admin2011-01-19  29

问题 有如下程序:    #include<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

解析 在函数形参是基类对象,可以在函数调用时用派生类对象作为实参。此时基类对象只能调用自己的数据成员,但是virtual函数除外,该成员在派生类中被改写,在基类中仍然适用,故答案为D。
转载请注明原文地址:https://kaotiyun.com/show/lUVp777K
0

最新回复(0)