作者shishe (賈富貴)
站內C_Sharp
標題[問題]新手:關于默認構造函數的問題
時間Sun Jan 23 17:11:18 2011
書上說如果一個類沒有定義任何構造函數,就會有一個默認的不帶參數的構造函數。
我做了如下實驗:
1、在一個類的定義中不寫任何構造函數,然后在另一個類的main函數中用不帶參數的構
造函數實例化這個類,證明可行。
2、在一個類的定義中寫兩個構造函數,分別是不帶參數的構造函數和帶2個參數的構造
函數,然后在另一個類的main函數中用這兩種構造函數實例化這個類,可以得到兩個對
象,證明可行。
3、在一個類的定義中僅寫一個2個參數的構造函數: 構造函數(int x,int y),然后在另
一個類的main函數中用不帶參數的構造函數實例化這個類,這時就不能成功,錯誤有兩
種情況:將2個參數的構造函數不定義為public時,錯誤是說構造函數(int,int)受保護
,但按我的理解我實例化時是調用的默認的構造函數(就是我沒寫但系統自己存在的那個
默認的不帶參數的構造函數),與構造函數(int,int)無關;將2個參數的構造函數定義為
public時,錯誤是說不存在0個參數的構造函數。
所以由以上實驗是否可以得出:如果一個類只定義了一個帶參數的構造函數,那么這個
類就不存在所謂的默認的不帶參數的構造函數了?
兩岸用語有不同,希望大家能理解。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 221.5.86.3
1F:→ james732:是的,只要自己有寫constructor,就不會自動產生了 01/23 17:18
2F:→ shishe:謝謝一樓解惑,我發現書上寫得不太清楚,懷疑是翻譯者問題 01/23 17:28
3F:推 horngsh:不管是C++或C#反正只要你有自己定義Constructor,就一定要 01/23 20:24
4F:推 horngsh:順便定義不帶任何參數的Constructor。 01/23 20:24