C++中的虚函数表(vtable)和纯虚函数(pure virtual function)是两个与多态性密切相关的概念
-
虚函数表(vtable): 虚函数表是一个编译时生成的特殊数据结构,它存储了类的虚函数地址。每个包含至少一个虚函数的类都有一个对应的虚函数表。当创建一个类的实例时,该实例会包含一个指向虚函数表的指针(vptr)。通过这个指针,程序可以在运行时查找并调用正确的虚函数实现。
-
纯虚函数(pure virtual function): 纯虚函数是一种特殊的虚函数,它在基类中没有定义具体的实现,而是用
= 0
表示。派生类必须提供纯虚函数的实现,否则它们也将成为抽象类,不能实例化。纯虚函数主要用于定义接口,强制派生类遵循某种规范。
总结一下,虚函数表是一种编译时机制,用于支持运行时的多态性;而纯虚函数是一种特殊的虚函数,用于定义接口和规范派生类的行为。