对象数组初始化及使用
如何对对象数组初始化及使用。
如下面的程序为什么不对,应该怎么做。我想显示出每个POINT对象的成员值。
class Point
{
public:float x,y;
Point::Point(void)
{
}
Point::~Point(void)
{
}
Point::Point(float x,float y)
{
x=x;y=y;
}
void Point::setPoint(float x,float y)
{
x=x;y=y;
}
};
int main(int argc, char** argv)
{
Point[] p=new Point[5];
for (int i=0;i<5;i++)
{
//p[i].setPoint(i,i);
p[i]=new Point(i,i);
}
for (int i=0;i<5;i++)
{
cout<<p[i].x<<","<<p[i].y<<endl;
}
delete []p;
return 0;
}
[解决办法]
#include <iostream>
using namespace std;
class Point
{
public:float x_,y_;
Point::Point(void)
{
}
Point::~Point(void)
{
}
Point::Point(float x,float y)
{
x_=x;y_=y;
}
void Point::setPoint(float x,float y)
{
x_=x;y_=y;
}
};
int main(int argc, char** argv)
{
Point* p[5];
for (int i=0;i <5;i++)
{
//p[i].setPoint(i,i);
p[i]=new Point((float)i,(float)i);
}
for (int j=0;j <5;j++)
{
cout <<p[j]->x_ <<"," <<p[j]->y_ <<endl;
}
for (int h=0;h <5;h++) delete p[h];
return 0;
}
0,0
1,1
2,2
3,3
4,4
Press any key to continue
[解决办法]
- C/C++ code
#include <iostream>using namespace std;class Point { public: float x,y; Point(){} ~Point(){} Point(float x,float y) { x=x;y=y; } void setPoint(float x,float y) { //类中的x,y需要跟函数参数区分开来 this->x=x;this->y=y; }}; int main(int argc, char** argv) { //数值对象应该这样创建.或 //Point p[5]; Point *p= new Point[5]; for (int i=0;i <5;i++) { //对象已创建,初始化值就OK p[i].setPoint(i,i); //p[i]=new Point(i,i); 不需要再重新创建对象,注释掉 } for (int i=0;i <5;i++) { cout <<p[i].x <<"," <<p[i].y <<endl; } //删除堆中的对象,该语句对应Point *p[5]= new Point[5]; delete []p; return 0; }