[問題] c++ 繼承問題

看板C_and_CPP (C/C++)作者 (Kagamie)時間11年前 (2013/05/03 14:55), 編輯推噓0(008)
留言8則, 2人參與, 最新討論串1/2 (看更多)
class Point2D{ public: Point2D(int,int); private: int x,y; }; class Point3D:public Point2D{ public: Point3D(int,int,int); private: int z; }; Point3D::Point3D(int a=0,int b=0,int c=0):Point2D(a,b),z(c){ } 與 Point3D::Point3D(int a=0,int b=0,int c=0):z(c){ Point2D(a,b); } 所產生的結果似乎不太一樣 我想了解一下上下兩種的含意! thx! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.75.235.127

05/03 15:03, , 1F
第二個的xy是預設值(垃圾),然後再另外做個Point2D
05/03 15:03, 1F

05/03 15:03, , 2F
馬上把這個Point2D丟掉。
05/03 15:03, 2F

05/03 15:05, , 3F
不過第二個應該根本就不能compile,因為沒有預設的
05/03 15:05, 3F

05/03 15:05, , 4F
Point2D()
05/03 15:05, 4F

05/03 15:38, , 5F
你不能直接自行呼叫建構子
05/03 15:38, 5F

05/03 15:44, , 6F
我搞錯了= =請忽略
05/03 15:44, 6F

05/03 15:44, , 7F
你第二個因為你有自行宣告建構子,所以不會有
05/03 15:44, 7F

05/03 15:45, , 8F
預設的Point2D(void),你要自己補上去
05/03 15:45, 8F
文章代碼(AID): #1HWrzTa- (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1HWrzTa- (C_and_CPP)