Effective c 學習筆記(六)

2021-08-02 14:00:27 字數 699 閱讀 6470

阻止拷貝的關鍵是:由於所有編譯器產出的函式都是public,可以將拷貝建構函式和拷貝運算子宣告為private。明確宣告乙個成員函式,可以阻止編譯器自動建立其專屬版本,而令這些函式為private,可以阻止使用者呼叫它。

class  home ;
當使用者拷貝home物件,編譯器會報錯。

為阻止拷貝動作而設計的基類

class  uncopy                      //允許派生類物件構造和析構

~ uncopy ()

private:

uncopy &operator = (const uncopy &rhs); //拷貝運算子

uncopy (const uncopy &rhs); //拷貝建構函式

};

class home: private  uncopy;
禁止使用者拷貝home物件時,繼承uncopy類。試圖拷貝home物件時,編譯器便試著生成乙個拷貝建構函式和拷貝操作符,這些函式嘗試呼叫其基類對應的函式,這些呼叫會被拒絕,因為基類的拷貝函式是private。

為了阻止編譯器自動生成拷貝函式和拷貝操作符,可以將相應的成員函式宣告為private並且不予實現。

Effective C 學習筆記 《六》

其實這一節的內容是和item5緊密相連的,上一節的核心圍繞著編譯器會自動生成類的一些方法,那麼這一節就是圍繞著如何去避免這些自動生成的方法。前一節說到如果想要編譯器避免自動生成,解決方法就是自己來寫乙個,而且要保證寫的這個 用不了 所以辦法就是宣告為private修飾的。但是這樣做其實是不夠安全的,...

Effective C 讀後筆記六

條款26 盡可能延後變數定義式的出現時間 除非在變數要使用的那一刻,否則不要提前定義變數。對於迴圈來說,當你不在迴圈外使用變數時,盡量在迴圈內定義變數。條款39 明智而審慎地使用private繼承 private繼承並不意味is a關係,即不是真正意義上的繼承,而是implemented in te...

Effective C 學習筆記

學習effective c 已經有相當長的一段時間了,今天抽出時間又堵了一遍第一部分 c語言 c 以c語言為基礎,幾乎支援所有的c語言成分,例如區塊 語句 預處理 內建資料型別 陣列 指標等,c語言的侷限是 沒有模板 沒有異常 沒有過載 物件導向的c 也就是加上了物件特性的c,類 封裝 繼承 多型 ...