九、virtual关键字
为什么要使用虚函数:
- 多态:虚函数允许我们通过基类指针或引用来调用派生类的实现,从而实现多态。这使得我们可以编写更通用、可扩展的代码。
- 可扩展性:通过使用虚函数,我们可以轻松地添加新的派生类,而无需修改现有的基类代码。
- 代码重用:虚函数允许派生类重用和扩展基类的功能,而无需完全重写函数。
如下是一个虚函数示例:
#include <iostream>
class Animal {
public:
virtual void makeSound() {
std::cout << "The animal makes a sound" << std::endl;
}
};
class Dog : public Animal {
public:
void makeSound() override {
std::cout << "The dog barks" << std::endl;
}
};
int main() {
Animal* animal = new Dog();
animal->makeSound(); // 输出 "The dog barks"
delete animal;
return 0;
}
在这个例子中,Animal 类有一个虚函数 makeSound(),Dog 类继承了 Animal 类并重写了 makeSound() 函数。当我们通过基类指针调用 makeSound() 时,实际上调用的是派生类 Dog 的实现。这就是虚函数实现多态的一个例子[1]。