【发布时间】:2015-07-15 09:24:12
【问题描述】:
我有一个多项式课程。 + 重载函数有效,但由于异常,我无法使用 = 重载函数! 我调试了程序,发现异常在析构函数中,我不知道如何修复它!
polynomial::~polynomial()
{
delete[] coeff;
}
const polynomial& polynomial::operator=(const polynomial& p)
{
if(this == &p)
return *this;
polynomial tmp(p);
std::swap(maxPoly, tmp.maxPoly);
std::swap(coeff, tmp.coeff);
return *this;
}
void polynomial::add(const polynomial& aPoly)
{
if(aPoly.maxPoly > maxPoly)
grow(aPoly.maxPoly);
for(int i = 0; i < (int) maxPoly; i++)
coeff[i] += aPoly.coeff[i];
}
polynomial::polynomial()
{
coeff = new int[10];
for (int i = 0; i < 10; i++)
{
coeff[i] = 0;
}
maxPoly = 10;
}
polynomial::polynomial(int size){
coeff = new int[size];
for (int i = 0; i < size; i++)
{
coeff[i] = 0;
}
maxPoly = size;
}
polynomial::polynomial(const polynomial& aPoly)
{
coeff = new int[aPoly.maxPoly];
for (int i = 0; i < aPoly.maxPoly; i++)
{
coeff[i] = aPoly.coeff[i];
}
maxPoly = aPoly.maxPoly;
}
【问题讨论】:
-
有什么异常?
-
我认为你很可能
delete两次相同的内存。所以问题实际上不在析构函数中,而是在你的复制构造函数中。 -
@Anton:我添加了构造函数和复制构造函数。有什么问题?
-
我们是否必须猜测异常是什么?
标签: c++ exception destructor