Effective C 學習筆記備忘

2022-02-20 23:08:28 字數 1437 閱讀 7554

目前對c++的了解還處於入門階段,這本書真正看懂的內容大概只有一半左右。大部分條款和機制先建立乙個印象,希望能在未來實際使用中再來回顧和加深理解。

條款02:

不允許在class內對static const型別變數賦值?替代方案是使用enum;   (p14)

條款03:

1.const與指標(p17~18)

char greeting="

hello";

const

char* p = greeting;//

non-const pointer, const data

char* const p = greeting;//

const pointer, non-const data

const

char* const p =greeting; //

const pointer, const data

void f1(const widget*pw);

void f2(widget const * pw);

2.const_cast和static_cast轉型(p24)

條款04:

member initalize list比建構函式為成員變數賦值效率通常更高,後者相當於呼叫了default建構函式為它們設初值,然後再賦予新值。(p28)

條款07:為多型基類宣告virtual析構函式

正如題名,這麼做是為了經由base class指標刪除derived class物件時把derived部分也一併銷毀。(p41)

把不帶virtual析構函式的類作為基類是不明智的,比如string/vector/list/set/tr1::unordered_map等等。

條款11:在operator=中處理「自我賦值」

方法一:判斷兩個運算元是否相同,比較耗費資源;

方法二:swap()建立rhs的副本,並與this交換。

條款20:

傳遞const引用可以避免傳value引起的派生類被「切割」(slicing),不僅僅是高效。(p89)

條款27:

使用容器儲存直接指向derived class物件的指標(通常是智慧型指標)避免dynamic_cast。

條款30:

inline函式如果改變,那麼所用到的所有檔案都需要重新編譯;反之,non-inline函式改變時只需重新連線就好,比前者負擔小得多。

條款43:

template特化版:template<>語法,使得在引數為某乙個時模板全特化。

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 中沒有統一的準則,要按照不同的特性採取不同的使用...

effective c 學習筆記

如果不考慮應用程式的使用場合,僅僅考慮語言的靈活性,我贊成作者的想法。但是不同的應用它會有不同的效能要求,所以語言的選擇,應該是用 最適合 條款去選擇。使用巨集定義常量,若定義在標頭檔案中,則所有包含標頭檔案的都可以使用。巨集定義,在預處理的時候進行替換。巨集定義一些簡單的函式,可以減少呼叫開銷,但...