虚函数和纯虚函数是 C++ 中实现多态性的关键概念
虚函数(Virtual Function)
- 定义:虚函数是在基类中使用
virtual
关键字声明的函数,目的是允许派生类重写该函数。 - 用途:通过虚函数,基类指针或引用可以调用派生类中重写的函数,从而实现动态多态性。
- 实现:虚函数可以在基类中提供默认实现,派生类可以选择是否重写。
- 语法示例:
class Base { public: virtual void show() { std::cout << "Base show" << std::endl; } }; class Derived : public Base { public: void show() override { // 重写虚函数 std::cout << "Derived show" << std::endl; } };
纯虚函数(Pure Virtual Function)
- 定义:纯虚函数是基类中声明为
= 0
的虚函数,表示该函数没有实现,必须由派生类提供实现。 - 用途:纯虚函数用于定义接口(抽象类),强制派生类实现特定的功能。
- 实现:不能直接实例化包含纯虚函数的类。
- 语法示例:
class AbstractBase { public: virtual void show() = 0; // 纯虚函数 }; class ConcreteDerived : public AbstractBase { public: void show() override { // 必须实现 std::cout << "ConcreteDerived show" << std::endl; } };
总结
- 虚函数:允许在基类中有实现,派生类可以选择重写。
- 纯虚函数:没有实现,要求派生类必须重写,形成抽象类,不能被实例化。
这两者共同支持 C++ 的多态性,提供了灵活的对象设计和接口定义。