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

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

Patricia Arquette
發布: 2024-11-26 14:32:09
原創
175 人瀏覽過

Why are Pure Virtual Functions Initialized with `0`?

理解用'0'初始化純虛函數

宣告純虛函數時,你可能會注意到它們總是被指派給值0:

virtual void fun() = 0;
登入後複製

這種做法提出了一個問題:為什麼純虛函數是用0 初始化。

錯誤的假設

最初,您可能認為值 0 被指派給純虛函數以將對應的 vtable 條目設為 NULL。然而,這個假設是不正確的。分配給純虛函數的值不一定會將 vtable 條目設為 NULL。

'0' 的真正原因

=0 語法的使用純虛函數的誕生可以追溯到 Bjarne Stroustrup 在 C 上的早期工作。他沒有引入像“pure”這樣的新關鍵字,而是選擇了 =0 語法,因為他相信當時它更有機會被 C 社區接受。

如 Stroustrup 本人在他的書中所說,在「C 的設計與演進」中, =0 語法並不是為了將 vtable 條目設為 NULL。而且,將vtable項設為NULL並不是純虛函數的理想實作策略。

結論

純虛函數的初始化為0與將 vtable 條目設為 NULL。相反,在 C 開發的早期階段,選擇 =0 語法純粹是出於可讀性和相容性的原因。

以上是為什麼純虛函數初始化為'0”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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