1.定義式是編譯器對此物件撥發記憶體的地點。
2.explicit宣告的建構函式可被用於禁止編譯器執行非預期的型別轉換。
注:對於單個引數的建構函式定義了從該形參型別到該型別的乙個**轉換。explicit只對建構函式起作用,用來抑制隱式轉換。
class a ;
int function(a a);
當呼叫 function(2) 的時候,2會隱式轉換為a型別。這種情況常常不是程式設計師想要的結果,所以,要避免之,就可以這樣寫:
class a ;
int function(a a);
這樣,當呼叫 function(2) 的時候,編譯器會給出錯誤資訊(除非 function 有個以 int 為引數的過載形式),這就避免了在程式設計師毫不知情的情況下出現錯誤。
3.copy建構函式和copy賦值操作符的區別是當有新物件被定義時必會呼叫copy建構函式,而沒有新物件產生時會呼叫copy賦值操作符。
4.當函式引數為值傳遞的型別時呼叫的是該型別的copy建構函式。
Effective C 讀書筆記1
條款1 視c 為乙個語言聯邦 今天的c 已經是個多重范型程式語言,乙個支援過程形式 物件導向形式 函式形式 泛型形式 元程式設計形式的語言。為了理解c 必須認識其主要的次語言,總共4個 1.c2.object oriented c 3.template c 4.stl 條款2 盡量以const,en...
Effective C 讀書筆記1
tmp 模板元程式設計 0.explicit建構函式比non explicit建構函式好。1.可以用const 來代替 define 定義乙個常量。define沒有作用域,也沒有封裝性。class a const int a num num的定義。在宣告式中已經獲初值,所以無需在定義式給初值。當在類...
Effective C 讀書筆記1
tmp 模板元程式設計 0.explicit建構函式比non explicit建構函式好。1.可以用const 來代替 define 定義乙個常量。define沒有作用域,也沒有封裝性。但enum不可以取位址,而const 常量能取位址。因此指標或引用不能指向enum常量。define定義巨集時,可...