永发信息网

C++编程题找错,很急,谢谢

答案:3  悬赏:20  手机版
解决时间 2021-02-03 16:54
  • 提问者网友:十年饮冰
  • 2021-02-03 04:10
C++编程题找错,很急,谢谢
最佳答案
  • 五星知识达人网友:一秋
  • 2021-02-03 05:42
主要问题出在下面的这个函数:
//做了两个修改1.把函数的返回值改为了引用,当然函数声明也得该
//2.把tmp改成了局部静态变量
//或者改为全局变量

Polynomial & Polynomial::operator+ (const Polynomial& rhs) //引用
{ //涓轰粈涔堣繖涔堜笉琛?

static Polynomial tmp;//Polynomial tmp = *this; //把这个变成局部静态
tmp = *this;//
tmp += rhs;//return tmp += rhs;
return tmp;//
}
//我想之前错误的原因是:
//这个tmp在这个函数调用结束之后会自动调用tmp的析构函数
//并且这个函数传回的是tmp的一个复制品,同样也会调用析构函数
//这个时候就会对同一片内存多次释放了

另外还有别的问题:
1.clear()函数中 循环外面的delete _head;不应该
2.在add函数中的那个while循环中当==的时候,应该delete it;
全部回答
  • 1楼网友:像个废品
  • 2021-02-03 07:21
我编译都通过了,没啥错误啊。
  • 2楼网友:过活
  • 2021-02-03 05:47
你是编译错误,还是运行错误哈?
我编译了一下,没有编译错误哈。
如果是编译错误的话,我推测是的头文件包含有问题。
在 Item.cpp 文件的开头增加#include "Item.h "
在Polynomial.h文件开头增加#include "Item.h "
在Polynomial.cpp文件开头增加#include "Polynomial.h"
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯