C++中的虛函數表(vtable)和純虛函數(pure virtual function)是兩個與多態性密切相關的概念
虛函數表(vtable): 虛函數表是一個編譯時生成的特殊數據結構,它存儲了類的虛函數地址。每個包含至少一個虛函數的類都有一個對應的虛函數表。當創建一個類的實例時,該實例會包含一個指向虛函數表的指針(vptr)。通過這個指針,程序可以在運行時查找并調用正確的虛函數實現。
純虛函數(pure virtual function):
純虛函數是一種特殊的虛函數,它在基類中沒有定義具體的實現,而是用= 0
表示。派生類必須提供純虛函數的實現,否則它們也將成為抽象類,不能實例化。純虛函數主要用于定義接口,強制派生類遵循某種規范。
總結一下,虛函數表是一種編譯時機制,用于支持運行時的多態性;而純虛函數是一種特殊的虛函數,用于定義接口和規范派生類的行為。