有如下程序: #include using namespace std; class Mountain{ int height; public: Mountain(int h=O):height(h){)

admin2014-08-29  28

问题 有如下程序:  
    #include
    using namespace std;
    class Mountain{
    int height;
    public:
    Mountain(int h=O):height(h){)
    virtual char*GetName0 const{return”山”;}
    int GetHeight() const{return height;)
    );
    class Lushan:public Mountain{
    Public:
    Lushan(int d):Mountain(d){)    ,
    Char*GetName()const{return”庐山”;)
    );
    int main(){
    Mountain*p=new Lushan(1 000);
    cout<GetName0<<“海拔”<GetHeight()<<“米”;
    return 0;
    }
运行这个程序的输出结果是(    )。

选项 A、庐山海拔1000米
B、庐山海拔0米
C、山海拔1000米
D、山海拔O米

答案A

解析 在基类Mountain中定义了虚函数GetName()输出字符串“山”,而在派生类Lushan中对虚函数GetName()进行了重新定义,输出字符串“庐山”。在主函数中对派生类中的虚函数GetName()进行了多态调用,此时调用的是派生类中重新定义的GetName(),输出字符字符串“庐山”。
转载请注明原文地址:https://kaotiyun.com/show/iXNp777K
0

最新回复(0)