有如下程序: nclude using namespace std; class Animal{ public: virtual char*getType()const{return“Animal”;} virtual char*getVoice()con

admin2010-03-15  36

问题 有如下程序:
nclude
using namespace std;
class Animal{
public:
virtual char*getType()const{return“Animal”;}
virtual char*getVoice()const{return“Voice”;}
};
class Dog:public Animal{
public:
char*getType()const{rgturn“Dog”;}
char*getVoice()const{retum“Woof”;}
};
void type(Animal&A){cout<void speak(AnimalA){cout<int main(){
Dog d.type(D);tout<<“speak”;speak(D);cout<return 0;
}
运行时的输出结果是【  】

选项

答案Dog speak Voice

解析 基类中有两个虚函数getType( )和getVoiee( ),在派生类中同样也有。函数type和speak的形参都是Animal类的对象,但是一个是引用调用,另一个不是。当用Animal的派生类Dog类定义的对象调用这两个函数时,type函数会转向:Dog类中的成员函数,而speak函数不会。
转载请注明原文地址:https://jikaoti.com/ti/qrW0FFFM
0

最新回复(0)