1、声明一个Animal类,派生出Dog类和Cat类,三个类中都定义Speak函数,其中基类中的Speak函数为虚函数。写出主函数并实现运行时的多态。
时间: 2024-03-08 18:48:59 浏览: 170
cg2_基类BaseClass派生出类_noddedc1c_
5星 · 资源好评率100%
好的,以下是代码实现:
```c++
#include <iostream>
using namespace std;
// 声明Animal类
class Animal {
public:
// 声明Speak函数为虚函数
virtual void Speak() {
cout << "动物在叫..." << endl;
}
};
// 派生出Dog类
class Dog : public Animal {
public:
// 重载Speak函数
void Speak() {
cout << "汪汪汪..." << endl;
}
};
// 派生出Cat类
class Cat : public Animal {
public:
// 重载Speak函数
void Speak() {
cout << "喵喵喵..." << endl;
}
};
int main() {
// 声明Animal指针
Animal* animal;
// 指向Dog对象
animal = new Dog();
animal->Speak(); // 运行时多态,输出汪汪汪...
// 指向Cat对象
animal = new Cat();
animal->Speak(); // 运行时多态,输出喵喵喵...
// 释放内存
delete animal;
return 0;
}
```
在上面的代码中,我们声明了一个Animal类,并且在其中声明了一个虚函数Speak。然后我们派生出了Dog和Cat类,并且分别重载了Speak函数。在主函数中,我们声明了一个Animal指针,并分别将它指向Dog和Cat对象,然后调用Speak函数,这样就实现了运行时的多态。运行结果如下:
```
汪汪汪...
喵喵喵...
```
阅读全文