读书人

对象数组初始化及使用,该如何处理

发布时间: 2012-02-15 12:09:43 作者: rapoo

对象数组初始化及使用
如何对对象数组初始化及使用。
如下面的程序为什么不对,应该怎么做。我想显示出每个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; } 

读书人网 >C++

热点推荐