以一段代码为例子说明多态性的用处
时间: 2024-03-24 22:37:34 浏览: 15
好的,以下是一个简单的代码示例来说明多态性的用处:
假设我们有一个基类 `Animal`,和两个派生类 `Dog` 和 `Cat`,它们都有一个公共的成员函数 `makeSound()`,但实现方式不同,比如:
```cpp
class Animal {
public:
virtual void makeSound() {
// 基类中的默认实现
std::cout << "This animal makes no sound." << std::endl;
}
};
class Dog : public Animal {
public:
void makeSound() override {
std::cout << "Woof!" << std::endl;
}
};
class Cat : public Animal {
public:
void makeSound() override {
std::cout << "Meow!" << std::endl;
}
};
```
现在我们可以创建一个存储基类指针的容器,然后向其中添加多个派生类实例,比如:
```cpp
std::vector<Animal*> animals;
animals.push_back(new Dog());
animals.push_back(new Cat());
```
然后我们可以遍历这个容器,调用其中每个实例的 `makeSound()` 函数,例如:
```cpp
for (auto animal : animals) {
animal->makeSound();
}
```
这里就体现了多态性的用处:我们只需要用基类指针指向不同的派生类对象,就可以通过调用它们的共同函数来执行不同的实现代码。这样就方便了代码的扩展和维护,也提高了代码的复用性和灵活性。