这段C++程序错在哪儿?编译通过却无法执行,显示停止工作

2024-12-03 00:41:47
推荐回答(3个)
回答(1):

停止工作都是内存错误,内存错误基本都是指针使用不当造成的。
Point p1,p2;只表示你定义指针p1,p2都是Point型的,但是并没有指向有效的内存,你p1,p2还没有指定一个Point型的对象就进行了操作,这是不对的。应该P1 = new Point;p2也是,这样p1,p2就指向了new出来的两块内存了,就可以继续操作了

回答(2):

p1,p2是指针,指针必须指向一个内存空间,你还未开辟空间就用了。显然是不对的。
#include
#include
class Point{
int x,y;
public:
void setPoint(int x,int y){ //设置坐标
this->x=x;
this->y=y;
}
void moveOff(int xOff,int yOff){ //相对移动
x+=xOff;
y+=yOff;
}
int getX(){return x;}
int getY(){return y;}
double distance(Point *p){ //计算当前点到另一个点之间的距离
double xdiff,ydiff;
xdiff=x-p->x;
ydiff=y-p->y;
return sqrt(xdiff*xdiff+ydiff*ydiff);
}
void show(){
cout<<"("< }
};
void main(){

Point *p1 = new Point; //先开辟P1,p2的内存空间
Point *p2 = new Point; //Point *p1,*p2;

p1->setPoint(1,2);
p2->setPoint(3,4);
cout<<"p1 is";
p1->show();
cout<<"p2 is";
p2->show();
cout<<"Distance is "<distance(p2)< p1->moveOff(5,6);
p2->moveOff(7,8);
cout<<"p1 is";
p1->show();
cout<<"p2 is";
p2->show();
cout<<"Distance is "<distance(p2)<}

回答(3):

没有对指针初始造成。