Effective C 學習筆記 (6)

2021-06-09 02:21:00 字數 590 閱讀 6562

其實本條款講的比較簡潔,由於條款5說明了「預設建構函式」、「拷貝建構函式」、「複製運算子」這三個雖然使用者不自己定義,但是用到的時候編譯器還是會為它們生成**,所以就導致了一些情況下, 使用者不想提供拷貝建構函式,但是編譯器預設生成了,解決這類問題主要經過了如下幾步。

1、 將拷貝建構函式生命為private的,這樣一來外部就沒法呼叫了;

2、 但是內部的成員方法或者friend類還是一樣可以呼叫,那怎麼辦呢?只申明,不實現,這樣一來用到的地方就會報乙個連線錯誤;

3、 有時候大家看到連線錯誤會比看到編譯錯誤更加抓狂,所以有什麼方法能讓該類問題在編譯階段就暴露出來呢,當然,實現乙個基類,然後繼承它,這樣一來子類就不用關心拷貝建構函式的問題了。以下是一些**樣例。

無論是在類外部還是在類裡面,都會在編譯時就會報錯,讀者可以自己嘗試其他幾種情況。其實這個例子在c++中最常見的是ios_base類,讀者可以查閱相關**。

Effective C 學習筆記(6)

term 09 never call virtual functions during construction or destruction.不要在建構函式和析構函式內直接或間接呼叫虛函式,這時的虛函式不具備多型特性。存在一種場景,我們希望在基類的建構函式中針對不同的派生類實現有區別的構造。但如果...

Effective C 學習筆記

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

Effective C 學習筆記

1 c 是乙個複合式的語言 c 中不同部分有著不同的語言特性,例如 1.1 在c中傳遞形參時,按照值傳遞比按照指標傳遞效率更高 1.2 在物件導向程式中,物件要按照const引用而不是按照值傳遞 1.3 在stl程式設計中採取按照值傳遞方式 所以說c 中沒有統一的準則,要按照不同的特性採取不同的使用...