virtual#

在 C++ 中,虚函数(virtual function)和纯虚函数(pure virtual function)是面向对象编程中用于实现多态性的关键概念。它们的主要区别在于定义和使用方式上。

虚函数#

定义#

  • 虚函数是在基类中声明的成员函数,前面加上了 virtual 关键字。

  • 它可以有实际的函数体,即具体的实现。

目的#

  • 虚函数允许派生类重写该函数,从而在运行时通过基类指针调用时,能够调用到正确的重写版本(动态绑定)。

示例#

class Base {
public:
    virtual void func() { /* 实现 */ }
};

class Derived : public Base {
public:
    void func() override { /* 重写实现 */ }
};

纯虚函数#

定义#

  • 纯虚函数也是在基类中声明的成员函数,前面同样加上了 virtual 关键字,并且在声明时使用 = 0 来表示没有默认实现。

  • 纯虚函数没有具体的实现,它必须在派生类中被重写。

目的#

  • 纯虚函数通常用来定义接口或抽象类,确保所有继承此类的派生类都必须提供一个具体实现。

  • 包含纯虚函数的类不能被实例化,只能作为其他类的基类。

示例#

class Base {
public:
    virtual void func() = 0; // 纯虚函数
};

class Derived : public Base {
public:
    void func() override { /* 必须提供的实现 */ }
};

总结#

  • 虚函数允许派生类选择性地重写其行为,即使不重写也有默认的行为。

  • 纯虚函数强制派生类必须提供实现,否则派生类也将成为抽象类。