有如下程序: #include #include using namespaee std; class Instrument{ public: Instrument(string t="乐器",string

admin2016-08-19  20

问题 有如下程序:
    #include
    #include
    using namespaee 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、钢琴-星空
B、钢琴-无名
C、乐器-星空
D、乐器-无名

答案A

解析 本题考查虚函数的运用,本题中基类Instrument,派生类Piano,其中虚函数为GetType,当定义Instrument*pi=new Piano(”星空”)时,调用派生类的GetType函数,得到type为钢琴,name为星空,所以输出钢琴一星空。选项A正确。
转载请注明原文地址:https://kaotiyun.com/show/FpNp777K
0

最新回复(0)