在物件導向程式設計中,純虛函數是一個至關重要的概念。顧名思義,它們是虛擬函數,必須在程式完成之前在衍生類別中實作。要將函數宣告為純虛函數,請使用語法:
virtual void fun() = 0;
純虛函數的一個值得注意的方面是它們的預設初始化為 0。這引出了一個問題:為什麼選擇這個特定值?
與常見的假設相反,「=0」初始化並不是為了將純虛函數的 vtable 條目設為 NULL。 C 語言的創建者Bjarne Stroustrup 在他的書《C 的設計與進化》中證實了這一點:
The curious "=0" syntax was chosen ... because at the time I saw no chance of getting a new keyword accepted.
換句話說,「=0」的選擇純粹是語法上的,由當時缺乏更好的方式來表示純虛函數。
需要注意的是,Stroustrup 也承認將 vtable 條目設為NULL 不是實現純虛函數的理想方式。現代 C 編譯器可以更有效地處理這方面的問題,確保純虛函數得到適當處理,而無需依賴 =0 初始化。
以上是為什麼純虛函數初始化為'=0”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!