這個在構(gòu)造函數(shù)里的那一部分有點不懂(問題在代碼上附著,真心求解)
#include <iostream>
using namespace std;
class Coordinate
{
? ??
public:
Coordinate(int x,int y)//這里也不能傳參數(shù)進去嗎?
{
? ?m_iX=x;//就是在這個地方,為什么不能在里面加這兩行
? ?m_iY=y;
}
// 打印坐標(biāo)的函數(shù)
void printInfo() ?
{
? ?cout<<"("<<m_iX<<","<<m_iY<<endl;
}
public:
int m_iX;
int m_iY;
};
int main(void)
{
//定義對象數(shù)組
? ? Coordinate coorArr[2];
? ? coorArr[0].m_iX=1;
? ? coorArr[0].m_iY=2;
? ? coorArr[1].m_iX=3;
? ? coorArr[1].m_iY=4;
//遍歷數(shù)組,打印對象信息
for(int i = 0; i < 2; i++)
{
coorArr[i].printInfo();
}
return 0;
}
2019-07-16
Coordinate coorArr[2];這一句的意思是使用默認構(gòu)造函數(shù)(不含參數(shù)的)生成兩個對象。但類沒有構(gòu)造函數(shù)的時候系統(tǒng)會自動生成一個無參構(gòu)造函數(shù),也就是默認構(gòu)造函數(shù)。但是當(dāng)你自己定義了構(gòu)造函數(shù)了,系統(tǒng)就不會再給你自動生成構(gòu)造函數(shù)。你的類只有你定義了一個由參構(gòu)造函數(shù),所以你只能用你定義的那個有參函數(shù)去創(chuàng)建對象例如:Coordinate coor(1,2)這是棧中或Coordinate *co =new Coordinate(1,2)這是堆中。上面那句代碼需要調(diào)用無參構(gòu)造函數(shù),你沒有,所以會報錯創(chuàng)建不成功。你可以自己再加一個無參構(gòu)造函數(shù)就行了。
2019-07-25
我贊同“我是塵風(fēng)呀”的回答,簡單來說,就是你自己在類中定義的構(gòu)造函數(shù)是有參數(shù)的,但是你在main函數(shù)中調(diào)用Coordinate類的時候并沒有給它參數(shù),例如:Coordinate coorArr(1, 2);執(zhí)行時可以通過的。? ? 所以,編譯器肯定會報錯。
2019-06-12
Coordinate coorArr[2];
這一句應(yīng)該對應(yīng)默認構(gòu)造函數(shù)
Coordinate()
{
}
但是你的類里面沒有默認構(gòu)造函數(shù),
2019-05-29
含參構(gòu)造函數(shù)是沒有問題的,問題在于在堆上使用沒有默認構(gòu)造函數(shù)去開辟空間;
#include <iostream>
using namespace std;
class Coordinate
{
public:
Coordinate(int x, int y)
{
m_iX = x;
m_iY = y;
}
// 打印坐標(biāo)的函數(shù)
void printInfo()
{
cout << "(" << m_iX << "," << m_iY << ")"<<endl;
}
public:
int m_iX;
int m_iY;
};
int main(void)
{
Coordinate coorArr(1,2);
coorArr.printInfo();
//Coordinate *m_pCoorArr = new Coordinate[2];? ?// 報錯
system("pause");
return 0;
}