【发布时间】:2019-12-16 09:31:42
【问题描述】:
我被要求重载这个操作符:p[d],做两件事,
返回次数为 d 的多项式的系数,因此只需 p[d]。
将次数为 d 的多项式的系数更改为 p[d]=c。
我使用链表来制作多项式。
这是第一个:
double Polynomial::operator[](const int num)
{
Monomial *ptr = NULL;
ptr = this->First;
while (ptr != NULL)
{
if (ptr->get_deg() == num)
{
return ptr->get_C();
}
ptr = ptr->GetNext();
}
return 0;
}
对于第二个,我正在考虑返回具有相同度数的单项式的地址并更改其系数,但它不起作用,因为我的两个函数都需要获得相同的参数(int 度数)。
这是我的第二个功能:
Monomial& Polynomial::operator[](const int num)
{
Monomial *ptr = NULL;
ptr = this->First;
while (ptr != NULL)
{
if (ptr->get_deg() == num)
{
return (*ptr);
}
ptr = ptr->GetNext();
}
return;
}
这就是它的测试方式,即使这里没有显示第二部分:
cout << "p[0]=" << p[0] << ", p[1]=" << p[1] << ", p[2]=" << p[2] << ", p[4]=" << p[4] << endl;
【问题讨论】:
-
你应该在
Monomial的实现上添加更多细节,因为如果你只返回Monomial&而Monomial没有operator=(double),你将无法做到p[d] = c;. -
void Monomial::operator=(double cc) { this->c = cc;这是我的 operator= 在 p[d] 之后使用的 Mononomial。
-
单项式列表是否按幂排序?如果没有,请考虑。第二个函数需要一个单项式(具有正确的度数)来修改,所以如果列表中没有,则应该创建并添加它,然后它可以返回对系数的引用。
-
它以链表的形式按度排序,抱歉我没有包含大部分代码,它只是很长,我认为发布一个很长的问题不合适。
标签: c++ function overloading