单选题 有如下程序:
#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;

程序的输出结果是

【正确答案】 D
【答案解析】[解析] 在函数形参是基类对象,可以在函数调用时用派生类对象作为实参。此时基类对象只能调用自己的数据成员,但是virtual函数除外,该成员在派生类中被改写,在基类中仍然适用,故答案为D。