问题 单项选择题

有如下程序:
#include<iostream>
using namespace std;
class Publication//出版物类
char name[30];
public:
Publication(char*name="未知名称")strcpy(this->name,name);
const char*getName( )constreturn name; //常数据成员
virtual const char*getType( )constreturn"未知类型";//虚常数据成员

class Book:public Publication //书类
public:
Book(char*name):Publication(name)
virtual const char*getType( )constreturn"书"; //虚常数据成员

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。

填空题
问答题 简答题