C++ 單引數建構函式 小結
阿新 • • 發佈:2019-01-06
單引數建構函式是一種比較特殊的建構函式
例如:
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;}//此時呼叫