C++中如何实现动态多态性
时间: 2024-05-01 18:23:18 浏览: 110
在C++中,动态多态性可以通过虚函数和基类指针/引用来实现。
具体而言,我们需要在基类中将需要动态多态的函数声明为虚函数,然后在派生类中进行重写。这样,在使用基类指针或引用调用该函数时,会自动调用派生类中的对应函数,实现动态多态性。
例如,假设我们有如下的基类和派生类:
```c++
class Animal {
public:
virtual void speak() {
cout << "This is an animal." << endl;
}
};
class Dog : public Animal {
public:
void speak() {
cout << "This is a dog." << endl;
}
};
```
我们可以使用以下代码来实现动态多态性:
```c++
Animal* animal = new Animal();
Animal* dog = new Dog();
animal->speak(); // 输出 "This is an animal."
dog->speak(); // 输出 "This is a dog."
```
这里,我们定义了一个指向基类的指针 `animal` 和一个指向派生类的指针 `dog`,然后分别通过它们调用 `speak()` 函数。由于 `speak()` 函数被声明为虚函数,并且在派生类中进行了重写,所以在调用 `dog->speak()` 时会自动调用派生类中的函数,输出 "This is a dog.",实现了动态多态性。
阅读全文