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对象会出现问题?
展开
 我来答
terranlong
2014-06-05 · TA获得超过7294个赞
知道大有可为答主
回答量:2660
采纳率:0%
帮助的人:4013万
展开全部

两个地方写错,看注释

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;
    }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式