单选题 有如下程序: #include #include using namespace std; class Instrument{ public: Instrument(string t="乐器",string n="无名"):type(t),name(n) { } virtual string GetType() const { return "乐器"; } virtual string GetName() const { return "无名"; } protected: string type,name; }; class Piano:public Instrument{ public: Piano(string n,string t="钢琴"):Instrument(t,n) { } string GetType() const { return "钢琴"; } string GetName() const { return name; } }; int main(){ Instrument *pi=new Piano("星空"); cout<GetType()<<'-'<GetName(); delete pi; return 0; } 运行时的输出结果是
【正确答案】 A
【答案解析】解析:本题考查虚函数的运用,本题中基类Instrument,派生类Piano,其中虚函数为GetType,当定义Instrument*pi=newPiano("星空")时,调用派生类的GetType函数,得到type为钢琴,name为星空,所以输出钢琴-星空。选项A正确。