、声明一个Animal类,派生出Dog类和Cat类,三个类中都定义Speak函数,其中基类中的Speak函数为虚函数。写出主函数并实现运行时的多态。
时间: 2024-02-21 14:00:15 浏览: 136
好的,以下是代码实现:
```c++
#include <iostream>
using namespace std;
class Animal {
public:
virtual void Speak() {
cout << "Animal speaks" << endl;
}
};
class Dog : public Animal {
public:
void Speak() {
cout << "Dog barks" << endl;
}
};
class Cat : public Animal {
public:
void Speak() {
cout << "Cat meows" << endl;
}
};
int main() {
Animal* ptrAnimal;
Animal a;
Dog d;
Cat c;
ptrAnimal = &a;
ptrAnimal->Speak();
ptrAnimal = &d;
ptrAnimal->Speak();
ptrAnimal = &c;
ptrAnimal->Speak();
return 0;
}
```
在这个程序中,我们定义了一个基类 `Animal`,其中有一个虚函数 `Speak()`。然后我们派生出了两个类 `Dog` 和 `Cat`,它们都重写了 `Speak()` 函数。
在主函数中,我们声明了一个指向基类的指针 `ptrAnimal`,并分别将其指向不同的对象。然后对于每个对象,我们都调用了 `Speak()` 函数,这样就实现了运行时的多态。
输出结果为:
```
Animal speaks
Dog barks
Cat meows
```
阅读全文