class foo
foo(char x, int y);
};
上面例子中,foo(x,0)語句並不呼叫當前物件的foo(char x, int y)函式,而是產生乙個臨時物件並對其初始化,然後在語句結束時(分號處)銷毀臨時物件。因此當前物件並未得到初始化,這恐怕出乎很多人的意料。
解決這個問題,常見的辦法是合併建構函式並使用預設引數:
class foo ;
如果不方便合併,則可將公共部分放到乙個private函式中,規避建構函式的相互呼叫。示意**如下:
class foo
foo(char x, int y)
...private:
void init(char x, int y);
};
關於建構函式
1 每個類必須有乙個建構函式,否則沒法建立物件 2 若programer沒有提供任何建構函式,則c 提供乙個預設的建構函式,該預設建構函式是無參建構函式,它僅負責建立物件,不做任何初始化的工作 3 只要programer定義了乙個建構函式 不管是無參還是有參構造 c 就不再提供預設的預設建構函式。即...
關於建構函式
之前學習c 很多東西都草草了解,並沒有吃透,建構函式就是乙個例子。不帶引數的建構函式稱為 預設建構函式 無論何時,只要使用 new 運算子例項化物件,並且不為 new 提供任何引數,就會呼叫預設建構函式。除非類是 static 的,否則 c 編譯器將為無建構函式的 類提供乙個公共的預設建構函式,以便...
關於建構函式
一 建構函式的一項關鍵特徵是它會在物件能夠被賦值給引用之前就執行。而建構函式和方法的不同在於建構函式沒有返回型別,且方法名一定與類名相同。package tydu class duck public class gouzao 輸出 ga ga ga 二 使用建構函式來初始化duck的狀態。最好的方法...