C++中的虛函數(shù)和純虛函數(shù)都是用來實現(xiàn)多態(tài)性的機制,但它們有一些不同之處。
虛函數(shù)是在基類中聲明的,可以在派生類中進行重寫,它允許在運行時根據(jù)對象類型來調(diào)用相應的函數(shù)。虛函數(shù)可以被派生類重寫,也可以選擇不重寫。如果派生類中沒有重寫虛函數(shù),那么將會調(diào)用基類中的虛函數(shù)實現(xiàn)。
純虛函數(shù)是在基類中聲明的沒有實現(xiàn)的虛函數(shù),它的函數(shù)體被設置為0。純虛函數(shù)強制派生類去實現(xiàn)它,派生類必須提供相應的實現(xiàn)。如果派生類沒有實現(xiàn)純虛函數(shù),那么派生類也將成為抽象類,無法實例化。
區(qū)別總結(jié)如下:
總的來說,虛函數(shù)和純虛函數(shù)都是用于實現(xiàn)多態(tài)性的,但純虛函數(shù)更加強制性,要求派生類必須提供實現(xiàn)。