有如下程序: #include #include using namespace std; class Instrument{ public: Instrument

admin2021-09-05  20

问题 有如下程序:
       #include
       #include
       using namespace std;
       class Instrument{
       public:
           Instrument(string t="乐器",string n="无名"):type(t),name(n) { }
           virtual string GetType() const { return "乐器"; }
           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、乐器-星空
B、乐器-无名
C、钢琴-星空
D、钢琴-无名

答案D

解析 本题考查虚函数的运用,本题中基类Instrument,派生类Piano,其中虚函数为GetType,当定义Instrument *pi=new Piano("星空")时,调用派生类的GetType函数,得到type为钢琴,执行GetName时只能执行基类的这个函数,输出无名,所以输出钢琴-无名。选项D正确。
转载请注明原文地址:https://jikaoti.com/ti/src0FFFM
0

最新回复(0)