c++利用运算符重载 定义多项式加法 返回值出错

classPoly{intn;public:int*a;Poly(){}Poly(int){cout<<"请输入多项式的次数:";cin>>n;a=newint[n+1]... class Poly{int n;
public:int *a;Poly(){}Poly(int){cout<<"请输入多项式的次数:";cin>>n;a =new int [n+1];cout<<"请依次输入各项系数 不存在该次项则输入0 最高项系数不得为0"< for(int i=0;i {cout cin>>a[i];}}Poly(const Poly &C){a=C.a;}~Poly(){delete []a;}void output(){cout<<"多项式如下:"< //if(a[0]!=0)cout for(int i=1;i if(a[i]!=0)cout cout }Poly operator +(Poly &add){Poly result;result.n=(n>add.n?n:add.n);int mi=n result.a=new int[n+1];for(int i=0;i result.a[i]=a[i]+add.a[i];if(n>add.n)for(int i=mi+1;i<=result.n;i++)result.a[i]=a[i];elsefor(int i=mi+1;i<=result.n;i++)result.a[i]=add.a[i];cout<<"a0:"<<result.a[0]<<endl;result.output();return result;}};int main(){Poly r(1);r.output();Poly s(1);s.output();Poly t;t=r+s;cout<<"t.a0:"<<t.a[0];t.output();return 0;}
展开
 我来答
小白范
2015-05-13 · TA获得超过358个赞
知道小有建树答主
回答量:309
采纳率:50%
帮助的人:291万
展开全部
a是new出来的,在赋值的时候不能浅拷贝,要深拷贝。
追问
那该怎么写
追答
Poly(const Poly &C)
{
a=C.a; // 这里需要重新为a分配内存,不能与C.a共用内存
改为:
n = C.n
a = new int[n+1];
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式