委託建構函式 轉換建構函式

2021-07-02 06:09:07 字數 759 閱讀 5526

c++11新標準,使我們可以定義所謂的委託建構函式(delegating  constructor),乙個委託建構函式使用它所屬的其他建構函式執行它自己的初始化過程。

class sales_data

sales_data():sales_data("",0,0.0)  {}

sales_data(string &s):sales_data(s,0,0.0) {}

sales_data(istream &is):sales_data()  

}; 如果建構函式只接受乙個實參,則它實際上定義了轉換為此類型別的隱式轉換機制,有時我們把這種建構函式稱為轉換建構函式(converting constructor)

sales_data類中,接受string的建構函式和接受istream的建構函式分別定義了從這兩種型別向sales_data隱式轉換的規則,也就是說在使用sales_data的地方,我們可以使用string或者istream作為替代

string null_book = "11111111";

//構建乙個臨時的sales_data物件

item.combine(null_book);

只允許一步類型別轉換

item.combine("11111111」);、、錯誤

//正確:顯示地轉換成string

item.combine(string("11111"));

委託建構函式

委託建構函式 在c 03,有經常的情況下將乙個建構函式在同乙個類中呼叫另乙個建構函式是有用的。不幸的是,這是用c 03不允許。通常這最終導致無論是重複的 1 2 3 4 5 6 7 8 9 10 11 12 13 14 classfoo foo intnvalue 在使用 方法被認為是重複的 更好的...

C 建構函式之委託建構函式

委託建構函式 c 11新標準擴充套件了建構函式初始值的功能,使得我們可以定義所謂的委託建構函式。乙個委託建構函式使用它所屬類的其他建構函式執行它自己的初始化過程,或者說它把它自己的一些 或者全部 職責委託給了其他建構函式。和其他建構函式一樣,乙個委託建構函式也有乙個成員初始值的列表和乙個函式體。在委...

建構函式 建構函式隱式轉換 拷貝建構函式

建構函式對於我們來說是比較熟悉的,c primer裡提到 類通過乙個或幾個特殊的成員函式來控制其物件的初始化過程,為 建構函式。例1 class fruit 定義乙個類,名字叫fruit 這樣的建構函式是我們比較常見的,但是如果變成 class fruit 定義乙個類,名字叫fruit 即使是乙個類...