编写上面题的C++代码,来实现
时间: 2024-09-07 17:06:07 浏览: 46
在C++中,多态通常是通过虚函数(virtual function)来实现的。当一个基类声明了虚函数后,它的派生类可以对这些函数进行重写(override),这样就可以通过基类的指针或引用调用不同的派生类函数,实现多态行为。
以下是一个简单的C++代码示例,演示了如何通过虚函数实现多态:
```cpp
#include <iostream>
// 基类
class Animal {
public:
// 虚函数声明
virtual void speak() {
std::cout << "Animal makes a sound" << std::endl;
}
virtual ~Animal() {} // 虚析构函数确保派生类正确析构
};
// 派生类1
class Dog : public Animal {
public:
// 重写基类中的虚函数
void speak() override {
std::cout << "Dog barks" << std::endl;
}
};
// 派生类2
class Cat : public Animal {
public:
// 重写基类中的虚函数
void speak() override {
std::cout << "Cat meows" << std::endl;
}
};
// 函数演示多态
void makeAnimalSpeak(Animal &animal) {
animal.speak();
}
int main() {
// 使用基类指针调用派生类重写的函数
Animal myDog;
Dog myDogInstance;
Animal myCat;
Cat myCatInstance;
// 使用基类引用调用派生类重写的函数
makeAnimalSpeak(myDogInstance); // 输出: Dog barks
makeAnimalSpeak(myCatInstance); // 输出: Cat meows
return 0;
}
```
在这段代码中,`Animal` 类有一个虚函数 `speak()`。`Dog` 和 `Cat` 类继承自 `Animal` 并重写了 `speak()` 方法。`makeAnimalSpeak()` 函数接受 `Animal` 类型的引用,并通过这个引用来调用 `speak()` 方法,根据实际传入的对象类型,会调用相应的重写方法,从而演示了多态的特性。
阅读全文