首頁 > 後端開發 > C++ > 為什麼純虛函數初始化為'=0”?

為什麼純虛函數初始化為'=0”?

Susan Sarandon
發布: 2024-12-04 18:31:14
原創
898 人瀏覽過

Why is a Pure Virtual Function Initialized with

為什麼純虛函數的預設初始化為「=0」?

在物件導向程式設計中,純虛函數是一個至關重要的概念。顧名思義,它們是虛擬函數,必須在程式完成之前在衍生類別中實作。要將函數宣告為純虛函數,請使用語法:

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板