我应该创建一个简单的c ++程序,它有一个名为polynomial的类。 它将创建动态数组中有6个数据,每个索引都是该项的指数,其值为系数。 一切都很好,直到我面对: "成员函数重载+运算符(前缀),它将查找并返回多项式的导数"。
在那里,我真的无法理解我的期望。在构造函数中,我将数组大小设置为6,因为我将被使用。 例如;在运行时,我将命令多项式如:7.4x ^ 5 + 3.1x ^ 2-10.2x + 14.9它将给我它的衍生物。 正是我要求的不是所有代码都没有,而是带有+运算符重载的逻辑。除此之外,我对我的程序没有任何问题。
答案 0 :(得分:0)
假设您的类名为Polynomial
,您可以重载前缀增量运算符,如下所示:
class Polynomial {
...
public:
...
Polynomial& operator++()
{
/* transform the polynomial to its derivative here */
/* the new polynomial will have -1 coefficients from the original */
return *this;
}
...
};
然后在代码中,您可以执行以下操作:
Polynomial poly(...);
++poly;
HTH
答案 1 :(得分:0)
通过我们能够从评论中收集的内容,您需要提供unary + operator
的成员重载。这个运算符如下:
Polynomial poly = Polynomial( /*initialise*/ );
Polynomial derivative;
derivative = +poly;
因此,在单词中,它作用于多项式并返回作为其导数的新多项式。
要求是将其声明为您的类的成员,这意味着您需要将以下内容添加到您的类定义中(作为公共成员):
Polynomial operator+();
然后在您的源文件中,您需要实现它;这段代码的骨架:
Polynomial Polynomial::operator+()
{
Polynomial derivative;
/* TODO: Set the derivative's coefficients to the derived coefficients of this */
return derivative;
}
现在,此代码要求您实施copy constructor
。如果您还没有这个,或者不知道如何做到这一点,并且您无法自己找到答案,那么请发布一个新问题。请注意the rule of three。