有如下程序: #include #include using namespace std; class Animal{ public: virtual string

admin2021-05-06  15

问题 有如下程序:
       #include
       #include
       using namespace std;
       class Animal{
       public:
           virtual string GetType() const { return "Animal"; }
           virtual string GetVoice() const { return "Voice"; }
       };
       class Dog:public Animal{
       public:
           string GetType() const { return "Dog"; }
           string GetVoice() const { return "Woof"; }
       };
       class Cat:public Animal{
       public:
           string GetType() const { return "Cat"; }
           string GetVoice() const { return "Miaow"; }
       };
       void Type(Animal& a) { cout<       void Speak(Animal& a) { cout<       int main() {
           Dog d; Type(d); cout<<" speak "; Speak(d); cout<<" - ";
           Cat c; Type(c); cout<<" speak "; Speak(c); cout<           return 0;
       }
运行时的输出结果是

选项 A、DogspeakVoice-CatspeakVoice
B、DogspeakWoof-CatspeakMiaow
C、AnimalspeakVoice-AnimalspeakVoice
D、AnimalspeakWoof-AnimalspeakMiaow

答案B

解析 本题考查虚函数的运用,本题中定义Dogd;Type(d)时,执行类class的Type函数,输出Dog,然后输出speak,然后执行派生类的Speak函数输出Voice,最后输出-,同理cat输出类似,所以结果为B选项正确。
转载请注明原文地址:https://kaotiyun.com/show/CUfp777K
0

最新回复(0)