溫馨提示×

c++虛函數(shù)和純函數(shù)的區(qū)別是什么

c++
小億
94
2023-10-25 19:51:17
欄目: 編程語言

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é)如下:

  1. 虛函數(shù)有默認的實現(xiàn),派生類可以選擇重寫;純虛函數(shù)沒有默認的實現(xiàn),派生類必須重寫。
  2. 虛函數(shù)可以被派生類選擇性地重寫,也可以不重寫;純虛函數(shù)必須在派生類中進行重寫。
  3. 含有純虛函數(shù)的類成為抽象類,無法實例化;虛函數(shù)可以實例化。
  4. 虛函數(shù)可以在基類中有實現(xiàn),也可以沒有實現(xiàn);純虛函數(shù)在基類中沒有實現(xiàn),只有聲明。
  5. 虛函數(shù)可以被調(diào)用,即使通過基類的指針或引用;純虛函數(shù)只能通過派生類的實例來調(diào)用。

總的來說,虛函數(shù)和純虛函數(shù)都是用于實現(xiàn)多態(tài)性的,但純虛函數(shù)更加強制性,要求派生類必須提供實現(xiàn)。

0