純虛函數是具體派生類必須重載的虛函數。如果一個類有一個沒有重載的純虛函數,那么它是一個抽象類,不能創建該類型的對象。
定義純虛函數體的原因有以下死點:
- 純虛析構函數。通常情況下,析構函數要么是虛函數并且為公有,要么是非虛函數并且為 protected。如果沒有提供函數定義,則不能實例化該基類的派生類。
- 強迫程序員認識到正在使用缺省行為。對于普通虛函數,如果派生類沒有重載則默認使用基類的缺省行為。如果不想隱含地使用基類的行為,可以使基類的虛函數為純虛函數,則派生類必須顯式地使用基類的行為。
- 提供部分行為。
- 幫助編譯器診斷錯誤。如果不小心調用了一個純虛函數(通常是對構造函數或析構函數間接調用),編譯器可能查不到問題所在,這是可以在純虛構函數里面寫一些使程序崩潰的代碼,從而方便進行查錯。
文章來源:
http://my.donews.com/robinchow/2007/02/05/rhawrggrcrbpbeslbvcspydjubkcgkwxswuj/