條款5:了解c++默默編寫並呼叫哪些函式
預設的函式包括:建構函式、copy建構函式、copy賦值運算子和析構函式,所有這些函式都是public且inline。這些函式僅當被呼叫的時候才會被編譯器建立出來。
除非這個class的base class自身宣告有virtual析構函式,則這個class的析構函式是non-virtual的。
default copy賦值運算子在遇到引用成員變數或const成員變數時拒絕編譯這一行的賦值動作,需要自己定義(因為reference或者const的更改操作不合法);另外,如果base class的copy賦值運算子宣告為private,則編譯器拒絕為derived classes生成default copy賦值運算子(derived classes無法copy賦值其base class的成員變數)。
條款6:若不想使用編譯器自動生成的函式,就該明確拒絕
可以將不想自動生成的函式宣告為private並且不予以實現。
將阻止生成的private函式放在class對應的base class中可將連線期的錯誤提前至編譯期。
友元機制允許乙個類將對其非公有成員的訪問權授予指定的類或者函式。友元不是授予友元關係的那個類的成員,所以不受宣告出現部分的訪問控制影響。
《effective C 》讀書筆記
1,c 關鍵字explicit c 中,乙個引數的 建構函式 或者除了第乙個引數外其餘引數都有預設值的多參建構函式 承擔了兩個角色。1 是個 構造器,2 是個預設且隱含的型別轉換操作符 所以,有時候在我們寫下如 aaa 這樣的 且恰好 的型別正好是aaa單引數構造器的引數型別,這時候 編譯器就自動呼...
Effective C 讀書筆記
一 讓自己習慣c 1 條款01 視c 為聯邦語言 c 的組成可分為四部分 1.c c 仍然以c語言為基礎。區塊 語句 預處理 內建資料型別 陣列 指標等都來自c。2.object oriented c c with classes所訴說的 classes 包括構造和析構 封裝 繼承 多型 virtu...
讀書筆記 Effective C
部分條款過於深奧,部分條款已了然於心,僅記錄當下所識所學 對於常量巨集定義,最好用const代替 define 對於函式巨集定義,最好用inline代替 define include ifdef ifndef仍被需要 內建物件記得手動初始化 使用成員初始列替換賦值操作 以local static替換...