请各位大神帮我看看这个指针到底哪里出错了??非常感谢!
#include<iostream>#include<cmath>usingnamespacestd;classpoint{public:point();point(in...
#include<iostream>
#include<cmath>
using namespace std;
class point
{
public:
point();
point(int xx,int yy){x=xx;y=yy;}
~point();
int getx(){return x;}
private:
int x,y;
};
int main()
{
point *p=new point;
point a(2,3);
p=&a;
cout<<p->getx()<<endl;
delete p;
return 0;
system("pause");
} 展开
#include<cmath>
using namespace std;
class point
{
public:
point();
point(int xx,int yy){x=xx;y=yy;}
~point();
int getx(){return x;}
private:
int x,y;
};
int main()
{
point *p=new point;
point a(2,3);
p=&a;
cout<<p->getx()<<endl;
delete p;
return 0;
system("pause");
} 展开
4个回答
展开全部
这个代码错了两个地方,LZ只改了一处:
1)构造函数和析构函数都只有声明,没有定义,同时使用构造函数初始化错误;
2)p重新指向了a的地址,a的地址是在栈不能delete,需要把delete提前:
#include<iostream>
#include<cmath>
using namespace std;
class point
{
public:
point(){} //这里
point(int xx,int yy){x=xx;y=yy;}
~point(){} //这里
int getx(){return x;}
private:
int x,y;
};
int main()
{
point *p=new point(); //这里
point a(2,3);
delete p; //还有这里
p=&a;
cout<<p->getx()<<endl;
//delete p;//还有这里
return 0;
system("pause");
}
1)构造函数和析构函数都只有声明,没有定义,同时使用构造函数初始化错误;
2)p重新指向了a的地址,a的地址是在栈不能delete,需要把delete提前:
#include<iostream>
#include<cmath>
using namespace std;
class point
{
public:
point(){} //这里
point(int xx,int yy){x=xx;y=yy;}
~point(){} //这里
int getx(){return x;}
private:
int x,y;
};
int main()
{
point *p=new point(); //这里
point a(2,3);
delete p; //还有这里
p=&a;
cout<<p->getx()<<endl;
//delete p;//还有这里
return 0;
system("pause");
}
展开全部
这个指针p是不能被删除的,它指向的是变量a,所以你释放的是变量a的内存空间,而不是你申请的内存空间,这是错误的
#include<iostream>
#include<cmath>
using namespace std;
class point
{
public:
point(){};///
point(int xx,int yy){x=xx;y=yy;}
~point(){};///
int getx(){return x;}
private:
int x,y;
};
int main()
{
point *p=new point(2,3);
cout<<p->getx()<<endl;
delete p;///这样是可以的
system("pause");
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<iostream>
#include<cmath>
using namespace std;
class point
{
public:
point(){};//需要定义
point(int xx,int yy){x=xx;y=yy;}
~point(){};//需要定义
int getx(){return x;}
private:
int x,y;
};
int main()
{
point *p=new point();
point a(2,3);
p=&a;
cout<<p->getx()<<endl;
delete p;
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
point()这个构造函数不要了,主函数里别给它实例化直接就写point *p这样就行了这个应该不是指针问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询