[問題] 預設建構元

看板C_and_CPP (C/C++)作者 (微笑的貓)時間16年前 (2010/06/20 01:09), 編輯推噓1(104)
留言5則, 3人參與, 最新討論串1/1
class X { private: int A,B; public: X(int a, int b) : A(a), B(b) //constructor { } }; class Y { X m; //沒有預設建構元依然能編譯成功 }; int main(void) { X n; //編譯失敗 system("pause"); return 0; } 請問一下, 為何在main裡的物件就要加上預設建構元(Default Constructor)才能編譯成功, 但在類別裡就不需要呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.224.239.9

06/20 01:20, , 1F
大概是因為你沒有用到 class Y,整個被 compiler 拔掉了
06/20 01:20, 1F

06/20 01:20, , 2F
試試在 main() 裡加入 Y y; 就會 compile error
06/20 01:20, 2F

06/20 01:24, , 3F
因為X m還沒實際生成
06/20 01:24, 3F

06/20 01:25, , 4F
X n是已生成的,找不到預設ctor當然出錯
06/20 01:25, 4F

06/20 01:56, , 5F
瞭解了,謝謝樓上二位 : )
06/20 01:56, 5F
文章代碼(AID): #1C7FdCtm (C_and_CPP)
文章代碼(AID): #1C7FdCtm (C_and_CPP)