1. 程式人生 > >自己理解的C++委託建構函式

自己理解的C++委託建構函式

就是將無參,少數引數的委託給多引數的去構造。
譬如下面的鐘表例子
首先沒有用委託構造的寫法

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;
};

這樣程式碼很簡潔,不用再去重複的構造,特別當過載建構函式的時候,直接委託一個多引數的去構造其他引數少的就行了。