定義Line的構(gòu)造函數(shù)時(shí),為什么不可以寫成如下形式呢?(編譯error C2512: “Coordinate”: 沒有合適的默認(rèn)構(gòu)造函數(shù)可用)
Line::Line(int x1,int y1,int x2,int y2)
{
m_coorA.setX(x1);
m_coorA.setY(y1);
m_coorB.setX(x2);
m_coorB.setY(y2);
cout<<"Line()"<<endl;
}
Line::Line(int x1,int y1,int x2,int y2)
{
m_coorA.setX(x1);
m_coorA.setY(y1);
m_coorB.setX(x2);
m_coorB.setY(y2);
cout<<"Line()"<<endl;
}
2017-12-09
舉報(bào)
2017-12-10
實(shí)例化Line對象時(shí),先實(shí)例化Coordinate對象點(diǎn)A和點(diǎn)B,實(shí)例化點(diǎn)A和點(diǎn)B時(shí),會自動調(diào)用構(gòu)造函數(shù),程序中如果只有構(gòu)造函數(shù)Coordinate(int x,int y)時(shí),調(diào)用時(shí)必須傳遞參數(shù),否則會報(bào)錯(cuò)。但如果加上默認(rèn)構(gòu)造函數(shù)Coordinate()時(shí),沒有參數(shù)傳遞時(shí)就會調(diào)用Coordinate()這個(gè)函數(shù),就不會報(bào)錯(cuò)了。
2017-12-11
m_coorA沒有實(shí)例化怎么就直接給m_coorA的屬性賦值了?
2017-12-09
兩種方法可以解決:①“把Line::Line(int x1,int y1,int x2,int y2)”后面接一句“:m_coorA(x1,y1),m_coorB(x2,y2)”; ②在Coordinate.h加一句“Coordinate();”,在Coordinate.cpp中加“Coordinate::Coordinate(){
?cout << "Coordinate()" << endl;}”,都可以運(yùn)行。原因是,程序中只有有參構(gòu)造函數(shù)Coordinate(int x,int y),不傳遞參數(shù)會出錯(cuò),可以寫一個(gè)無參構(gòu)造函數(shù),這樣你的程序就能運(yùn)行了。