1. 程式人生 > >C++ 單引數建構函式 小結

C++ 單引數建構函式 小結

單引數建構函式是一種比較特殊的建構函式

例如:

calss  CAtype

{

public:

     CAtype(int a)//單一引數建構函式

    {

        nMember = a;

    }

private:

   int nMember;

}

void main()

{

   A  cAInstance = 2;//此處會呼叫單一引數建構函式,而不會呼叫賦值運算子,切記;這種呼叫方式屬於隱式呼叫

}

注意:

這種呼叫方式,會使得程式不容易正確理解,因此程式設計師,為了防止這樣的呼叫發生, 可以使用關鍵字explicit修改單一引數建構函式,防止其被不可預知的呼叫;,保證其只能通過顯式呼叫的方式呼叫。

單一引數建構函式的呼叫時機:

(1)用於初始化物件;

A   cAInstance1 =  x;//此時呼叫;

(2) 作為函式引數被呼叫時;

void Fun(A cAPar) {...}

Fun(x)//此時d呼叫

(3)作為函式返回值僅限於值傳遞

A  Get(){  T  x;  return x;}//此時呼叫


一個極為明顯的例子是,拷貝建構函式,拷貝建構函式顯然是一個  單一引數建構函式,它具備單一引數建構函式的一切特徵;

拷貝建構函式何時會被呼叫:

(1)用於初始化物件;

A   cAInstance1 =  cAInstance2;//此時呼叫;

(2) 作為函式引數被呼叫時;

void Fun(A cAPar) {...}

Fun(cAinstance)//此時d呼叫

(3)作為函式返回值僅限於值傳遞

A  Get(){  A  cAinstance(10);  return cAinstance;}//此時呼叫