讀書筆記 抑制建構函式定義隱式轉換

2021-06-15 21:17:00 字數 495 閱讀 9650

可以通過將建構函式宣告為explicit,來防止在需要隱式轉換的上下文中使用建構函式。explicit關鍵字只能用於類的內部建構函式宣告上,在類的定義體外不再重複

class sales_item

};string null_book="9-19";

item same_isbn(null_book);

這段程式使用乙個string型別物件作為實參傳給sales_item的same_isbn函式。編譯器使用接受乙個string的sales_item被傳遞給sales_isbn.

使用explicit後,建構函式不能用於隱式建立物件

item.same_isbn(null_book);        //error:string constructor is explicit

使用顯示的建構函式:

string null_book="9-19";

item.same_isbn(sales_item(null_book));    //ok 

讀書筆記 建構函式和複製控制

建構函式和複製控制成員不能繼承,每個類定義自己的建構函式和複製控制成員,如果不自己定義,就將編譯器自動合成。如果類需要只希望派生類使用的特殊建構函式,這樣的建構函式應定義為protected。派生類的合成預設建構函式的初始化時 1.先呼叫派生類上一級的預設建構函式初始化 2.然後初始化本壘的資料成員...

《C Primer》讀書筆記 函式

函式定義 函式組成 由函式名 一組運算元 形參,parameter 在一對圓括號中宣告,形參之間由逗號分隔 函式執行的運算 函式體,function body 塊組成和乙個返回型別組成 return type 函式呼叫 使用呼叫操作符進行呼叫 一對圓括號 形參型別必須與實參相同或者實參可被轉換為形參...

C Primer 讀書筆記 函式

void fun initializer listil initializer list定義在同名的標頭檔案中 fun initializer list物件的元素永遠是常量值。string read void print const string void print double 過載print函...