热门问题
时间线
聊天
视角
三法則
C++程式設計 来自维基百科,自由的百科全书
Remove ads
三法則(英語:Rule of Three)以及五法則在C++裡,它是一個以設計的基本原則而制定的定律。
![]() | 此條目可参照英語維基百科相應條目来扩充。 (2022年11月15日) |
規則
它的要求是,假如类有明顯定義下列其中一個成員函式,那麼程序员必須寫入其他兩個成員函式到類別內,也就是說下列三個成員函式缺一不可[註 1] [1]。
上述三個函式是特別的成員函式,假如程式設計師沒有自行定義或宣告這三個函式,編譯器會自動地建立他們並且編譯到應用程式內。然而,如果程式設計師僅定義其中一個,其餘兩個函式仍然會由編譯器自動產生,這種混雜的情況非常容易產生程式設計師難以預期的錯誤。三法則的存在,正是提醒程式設計師避免那樣的陷阱。 三法則這個專有名詞是由馬歇爾·克來恩於1991年創立[註 2][2]。
它的修正版本是,假如類別有用到RAII,可以不必定義解構子,也就是所謂的二大定律[註 3][3]。 因為隱性產生的建構子與設定運算子可以很容易地複製類別內所有的資料成員[4],當資料成員是指標型態時,指標位址會隨著類別而跟著被複製[註 4]。要注意的是,直接地複製指標位址是一項非常危險的動作,所以只要類別有封裝指標型態的資料結構,或是類別有封裝外部參照的資料成員,例如指標型態的資料成員,程式設計師應該為此而定義顯性的複製建構子與設定運算子[註 5]。
Remove ads
五法則
範例
Remove ads
注釋
參考資料
相關條目
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads