委託建構函式
c++11新標準擴充套件了建構函式初始值的功能,使得我們可以定義所謂的委託建構函式。乙個委託建構函式使用它所屬類的其他建構函式執行它自己的初始化過程,或者說它把它自己的一些(或者全部)職責委託給了其他建構函式。
和其他建構函式一樣,乙個委託建構函式也有乙個成員初始值的列表和乙個函式體。在委託建構函式體內,成員初始值列表只有乙個唯一的入口,就是類名本身。和其他成員初始值一樣,類名後面緊跟圓括號括起來的引數列表,引數列表必須與類中另外乙個建構函式匹配。
下面是委託建構函式的乙個例項
#includeusing namespace std;
class clock
//委託建構函式
clock()
:clock(10,20,30) {}
clock(int _hour)
:clock(_hour,6,7){}
clock(int _hour,int _minute)
:clock(_hour, _minute, 20) {}
void showtime();
private:
int hour;
int minute;
int second;
};int main()
void clock::showtime()
輸入結果如下:
注意事項:
1 委託構造函式引數順序和被呼叫的函式一一對應的,實際上只是乙個形參,例如這樣是無效的:
clock(int _minute,int _hour)
:clock(_minute,__hour,20) {}
輸入的時候依然是 10,15,20
2 委託建構函式只能定義在類裡面。
3 被委託(呼叫)的建構函式不能有預設值,例如:
clock(int _hour=11, int _minute=22, int _second=33)
:hour(_hour), minute(_minute), second(_second) {}
委託建構函式 轉換建構函式
c 11新標準,使我們可以定義所謂的委託建構函式 delegating constructor 乙個委託建構函式使用它所屬的其他建構函式執行它自己的初始化過程。class sales data sales data sales data 0,0.0 sales data string s sales...
c 基礎之委託建構函式
c 11之前的狀況 建構函式多了以後,幾乎必然地會出現 重複的情況,為了避免這種情況,往往需要另外編寫乙個初始化函式。class cty cty int x,int y cty int x,int y,int z cty int x,int y,int z,int h void initdata i...
委託建構函式
委託建構函式 在c 03,有經常的情況下將乙個建構函式在同乙個類中呼叫另乙個建構函式是有用的。不幸的是,這是用c 03不允許。通常這最終導致無論是重複的 1 2 3 4 5 6 7 8 9 10 11 12 13 14 classfoo foo intnvalue 在使用 方法被認為是重複的 更好的...