c++中类的对象析构问题
classa{Int*b;public:a(){b=newint[5];for(inti=0;i<5;i++)cin>>a[i];}a(inti){b=newint[5]...
class a{
Int*b;
public:
a(){
b=new int[5];
for(int i=0;i<5;i++)
cin>>a[i];
}
a(int i){
b=new int[5];
}
a operator+(a one){
a ans(1);
for(int i=0;i<5;i++){
ans.b[i]=b[i]+one.b[i];
}
return ans;
}
~a(){
delete[]a;
}
请问我就是写了这么一个类,为什么在调用operator+函数时要析构ans对象会出现问题? 展开
Int*b;
public:
a(){
b=new int[5];
for(int i=0;i<5;i++)
cin>>a[i];
}
a(int i){
b=new int[5];
}
a operator+(a one){
a ans(1);
for(int i=0;i<5;i++){
ans.b[i]=b[i]+one.b[i];
}
return ans;
}
~a(){
delete[]a;
}
请问我就是写了这么一个类,为什么在调用operator+函数时要析构ans对象会出现问题? 展开
1个回答
展开全部
两个地方写错,看注释
class a
{
int *b;
public:
a()
{
b=new int[5];
for(int i=0;i<5;i++)
cin>>b[i]; // 应该是b
}
a(int i)
{
b=new int[5];
}
a operator+(a one)
{
a ans(1);
for(int i=0;i<5;i++)
{
ans.b[i]=b[i]+one.b[i];
}
return ans;
}
~a()
{
delete[]b; // 应该是b
}
};
更多追问追答
追问
b是一个数组delete[]b应该是没有问题吧,而且这里的问题是当operator+函数结束调用时,为何析构ans对象会出现问题。
追答
重载+的地方,不是那样写的,应该写成
a& operator+(a& one)
{
for(int i=0;i<5;i++)
{
b[i]=b[i]+one.b[i];
}
return *this;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询