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

admin2021-09-05  20

问题 有如下程序:
       #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

答案D

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

随机试题
最新回复(0)