九、virtual关键字

小吴湾的北极熊 / 2024-02-23 / 原文

九、virtual关键字

为什么要使用虚函数:

  1. 多态:虚函数允许我们通过基类指针或引用来调用派生类的实现,从而实现多态。这使得我们可以编写更通用、可扩展的代码。
  2. 可扩展性:通过使用虚函数,我们可以轻松地添加新的派生类,而无需修改现有的基类代码。
  3. 代码重用:虚函数允许派生类重用和扩展基类的功能,而无需完全重写函数。

如下是一个虚函数示例:

#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]


  1. 鱼先知:# c++ 什么是虚函数?为什么要使用虚函数 ↩︎