看板 C_and_CPP 關於我們 聯絡資訊
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
azureblaze:第二個的xy是預設值(垃圾),然後再另外做個Point2D 05/03 15:03
azureblaze:馬上把這個Point2D丟掉。 05/03 15:03
azureblaze:不過第二個應該根本就不能compile,因為沒有預設的 05/03 15:05
azureblaze:Point2D() 05/03 15:05
diabloevagto:你不能直接自行呼叫建構子 05/03 15:38
diabloevagto:我搞錯了= =請忽略 05/03 15:44
diabloevagto:你第二個因為你有自行宣告建構子,所以不會有 05/03 15:44
diabloevagto:預設的Point2D(void),你要自己補上去 05/03 15:45