[問題]新手:關于默認構造函數的問題

看板C_Sharp作者 (賈富貴)時間15年前 (2011/01/23 17:11), 編輯推噓2(202)
留言4則, 3人參與, 最新討論串1/1
書上說如果一個類沒有定義任何構造函數,就會有一個默認的不帶參數的構造函數。 我做了如下實驗: 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

01/23 17:18, , 1F
是的,只要自己有寫constructor,就不會自動產生了
01/23 17:18, 1F

01/23 17:28, , 2F
謝謝一樓解惑,我發現書上寫得不太清楚,懷疑是翻譯者問題
01/23 17:28, 2F

01/23 20:24, , 3F
不管是C++或C#反正只要你有自己定義Constructor,就一定要
01/23 20:24, 3F

01/23 20:24, , 4F
順便定義不帶任何參數的Constructor。
01/23 20:24, 4F
文章代碼(AID): #1DE_2x63 (C_Sharp)