什 么是纯虚函数

纯虚函数是指不必在基类中定义,但必须在派生类中被覆盖(override)的函数。通过新奇的“=0”语法可将虚函数声明为纯虚函数。例如:

在此,Base 是抽象类(因为它有一个纯虚函数),所以不能直接用它来定义对象:Base(很显然)是用来做基类的。例如:

抽象类是定义接口的非常好的工具。事实上,一个只有纯虚函数的类通常被称为接口。

当然你也可以定义纯虚函数:

Base::f3() { /* … */ }

这样做往往意义不大(虽然这样做可为派生类提供一些简单的公共代码),而且在派生类中仍然需要覆盖 Base::f3()。

如果你没有在派生类中覆盖纯虚函数,那该派生类也是抽象类: