自己理解的C++委託建構函式
阿新 • • 發佈:2019-01-09
就是將無參,少數引數的委託給多引數的去構造。
譬如下面的鐘表例子
首先沒有用委託構造的寫法
class Clock { public : Clock();//無參 Clock(int h,int m,int s);//帶三個引數的 private : int Hour,Minute,Second; }; Clock::Clock():Hour(0),Minute(0),Second(0){};//預設無參的 Clock::Clock(int h,int m,int s):Hour(h),Minute(m),Second(s){};//下面方法好用
這樣的話下面對無參的函式寫起來有些繁瑣。因為無參函式賦值都為零,
不如直接將三個引數的值賦值為零,不就是無參的構造函數了嗎。
下面是委託建構函式:
class Clock
{
public :
Clock():Clock(0,0,0){};//無參(同樣適用一個引數的,委託給帶三個引數的去構造就行)
Clock(int h,int m,int s):Hour(h),Minute(m),Second(s){};//帶三個引數的
private :
int Hour,Minute,Second;
};
這樣程式碼很簡潔,不用再去重複的構造,特別當過載建構函式的時候,直接委託一個多引數的去構造其他引數少的就行了。