tmp 模板元程式設計
0.explicit建構函式比non-explicit建構函式好。
1.可以用const 來代替#define 定義乙個常量。
#define沒有作用域,也沒有封裝性。
但enum不可以取位址,而const 常量能取位址。因此指標或引用不能指向enum常量。
#define定義巨集時,可以用template inline函式代替。
#ifdef/#ifndef 很重要。
const vector::iterator pos; //類似t* const 即指向不變
vector::const_iterator pos; //類似const t* 即指向的元素不變。
函式返回值後加const 為了避免意外發生。
成員函式如果常量性不同就可被過載。
編譯器遵循bitwise constness準則。如果想要實現logical constness,則用mutable改變const值
bitwise constness:只要成員函式宣告為const,則類中任何乙個成員都不能變。
logical constness:對於客戶來說不變即可。
當過載成員函式(只有const區別),則非const呼叫const函式為好,中間可進行強制轉換。
在寫函式時要考慮const。
面對成員變數為const或reference時,他們一定要初始化列表,而不是賦值。
建構函式用初始化列表初始化。
當建構函式的初始化和賦值效率差不多時,則建立private函式存放共同的部分,在多個建構函式中呼叫。
當兩個類在不同編譯單元中,當乙個類要用到另乙個類物件時,不知道初始化順序,所以為了確保順序,必須定義乙個函式
當變為下面時,
/*a& a()
*/情況好轉。
這就是傳說的singleton模式。
改進版
Effective C 讀書筆記1
條款1 視c 為乙個語言聯邦 今天的c 已經是個多重范型程式語言,乙個支援過程形式 物件導向形式 函式形式 泛型形式 元程式設計形式的語言。為了理解c 必須認識其主要的次語言,總共4個 1.c2.object oriented c 3.template c 4.stl 條款2 盡量以const,en...
Effective C 讀書筆記 1
1.定義式是編譯器對此物件撥發記憶體的地點。2.explicit宣告的建構函式可被用於禁止編譯器執行非預期的型別轉換。注 對於單個引數的建構函式定義了從該形參型別到該型別的乙個 轉換。explicit只對建構函式起作用,用來抑制隱式轉換。class a int function a a 當呼叫 fu...
Effective C 讀書筆記1
tmp 模板元程式設計 0.explicit建構函式比non explicit建構函式好。1.可以用const 來代替 define 定義乙個常量。define沒有作用域,也沒有封裝性。class a const int a num num的定義。在宣告式中已經獲初值,所以無需在定義式給初值。當在類...