将上列代码用虚函数实现
时间: 2024-02-17 16:03:22 浏览: 50
假设上列代码为一个简单的父类Animal和它的两个子类Dog和Cat,我们可以将Animal类中的speak方法变为虚函数,以实现多态性。
```c++
#include <iostream>
using namespace std;
class Animal {
public:
virtual void speak() {
cout << "I am an animal." << endl;
}
};
class Dog : public Animal {
public:
void speak() {
cout << "I am a dog." << endl;
}
};
class Cat : public Animal {
public:
void speak() {
cout << "I am a cat." << 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类中的speak方法。在main函数中,我们创建了一个Animal指针指向Animal对象,一个Animal指针指向Dog对象,一个Animal指针指向Cat对象,然后分别调用它们的speak方法,输出结果为:
```
I am an animal.
I am a dog.
I am a cat.
```
可以看到,Animal类中的speak方法被子类Dog和Cat中的speak方法覆盖了,实现了多态性。
阅读全文