问题 单项选择题

有如下程序:
#include<iostream>
#include<string>
using namespace std;
class Instrument
public:
Instrument(string t="乐器",string n="无名"):type(t),name(n)
virtual string GetType() constreturn"乐器";
virtual string GetName() constreturn"无名";
protected:
stnng type,name;
;
class Piano:public Instrument
public:
Piano(string n,string t="钢琴"):lnstrument(t,n)
string CetType() constreturn"钢琴";
string GetName() constreturn name;
;
int main()
Instrument * pi=new Piano("星空");
cout<<pi->GetType()<<’-’<<pi->GetName();
delete pi;
return 0;

运行时的输出结果是______。

A.钢琴-星空
B.钢琴-无名
C.乐器-星空
D.乐器-无名

答案

参考答案:A

解析: 本题考查虚函数的运用,本题中基类Instrument,派生类Piano,其中虚函数为GetType,当定义Instrument*pi=new Piano("星空")时,调用派生类的GetType函数,得到type为钢琴,name为星空,所以输出钢琴-星空。选项A正确。

多项选择题
单项选择题