单选题
有如下程序:
#include<iostream>
using namespace std;
class Mountain{
int height;
public:
Mountain(int h=0):height(h){}
virtual char* GetName()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(1000);
cout<<p->GetName()<<"海拔"<<p->GetHeight()<<"米";
return 0;
}
运行这个程序的输出结果是______。
【正确答案】
A
【答案解析】[解析] 在基类Mountain中定义了虚函数GetName()输出字符串“山”,而在派生类Lushan中对虚函数GetName()进行了重新定义,输出字符串“庐山”。在主函数中对派生类中的虚函数GetName()进行了多态调用,此时调用的是派生类中重新定义的GetName(),输出字符字符串“庐山”。