1、虚函数(virtual functions)
虚函数(virtual functions)是一种允许在派生类中重写基类函数的特性。通过在基类中声明虚函数,可以在派生类中重新实现(override)该函数,从而实现多态性(polymorphism)。
2、多态(polymorphism)
多态(polymorphism)是面向对象编程中的一个重要概念,它允许不同类的对象对同一消息(函数调用)作出不同的响应。主要通过虚函数和继承来实现。
3、示例源码
#include <iostream>
using namespace std;
// 基类
class Animal {
public:
// 虚函数
virtual void makeSound() {
cout << "Animal makes a sound." << endl;
}
};
// 派生类 Dog
class Dog : public Animal {
public:
// 重写基类中的虚函数
void makeSound() override {
cout << "Dog barks" << endl;
}
};
// 派生类 Cat
class Cat : public Animal {
public:
// 重写基类中的虚函数
void makeSound() override {
cout << "Cat meows" << endl;
}
};
int main() {
Animal* animal;
Dog dog;
Cat cat;
// 指向不同派生类对象的基类指针
animal = &dog;
animal->makeSound(); // 调用 Dog 类的 makeSound 函数
animal = &cat;
animal->makeSound(); // 调用 Cat 类的 makeSound 函数
return 0;
}
Animal类有一个虚函数makeSound,并且Dog和Cat类分别重写了这个虚函数。在main函数中,通过将不同派生类对象的地址赋给基类指针,然后调用虚函数makeSound,实际上会根据对象的实际类型调用对应的函数。