声明一个Animal类,派生出Dog类和Cat类,三个类中都定义Speak函数,其中基类中的Speak函数为虚函数。写出主函数并实现运行时的多态。
时间: 2024-02-23 10:02:03 浏览: 50
虚函数内存模型
以下是实现Animal类、Dog类和Cat类,并实现运行时的多态的代码示例:
```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* animal1 = new Animal();
Animal* animal2 = new Dog();
Animal* animal3 = new Cat();
animal1->Speak();
animal2->Speak();
animal3->Speak();
delete animal1;
delete animal2;
delete animal3;
return 0;
}
```
在这个示例中,首先定义了一个Animal类,其中定义了虚函数Speak()。然后派生出Dog类和Cat类,它们都重写了基类的Speak()函数。在主函数中,我们创建了三个Animal类型的指针,并分别指向Animal、Dog和Cat对象。然后通过这些指针调用Speak()函数,实现了运行时的多态。最后记得释放动态分配的内存。
阅读全文