C++ 虚函数

虚函数是C++面向对象编程实现多态的核心方式。

一、虚函数

在基类中使用virtual关键字标记的函数为虚函数:

class Base {
public:
  virtual void func() {
    //...
  }
};

二、重写虚函数

派生类可以重写基类虚函数实现不同的功能:

class Derived : public Base {
public:
  virtual void func() {
    // 不同实现
  }  
};

三、多态

通过基类指针或引用调用虚函数,会执行实际派生类重写的版本:

Base* p = new Derived();
p->func(); // 调用Derived::func版本

四、纯虚函数

在基类将虚函数设置为纯虚函数,需要子类重写:

class Base {
public:
  virtual void func() = 0; 
};

class Derived : public Base {
public:
  void func() {
    // 重写纯虚函数
  }
}; 

五、虚析构函数

析构函数通常也需要声明为虚析构函数。

六、动态绑定

虚函数调用属于动态绑定,在运行时决定调用的函数版本。

虚函数是C++实现动态多态的主要方式,是C++面向对象编程的重要特性。