多项式++:如何将p(x)增加1

Polynomial++: How to increment p(x) by 1

本文关键字:增加 多项式      更新时间:2023-10-16

我有一个Polynomial类,我正在尝试定义operator++,包括前增量和后增量,以及尝试定义前减量和后减量,即operator--。以下是我的代码片段:

class Polynomial
{
public:
    Polynomial();
    Polynomial(vector<int>coeffs);
    /*
    .
    .
    .
    */
    Polynomial operator++();
    Polynomial& operator++ (int unused);
    Polynomial operator--();
    Polynomial& operator-- (int unused);
    /*
    .
    .
    .
    */
private:
    vector<int> coefficient;
};
Polynomial Polynomial::operator++()
{
    coefficient[0]++;
    return *this;
}
Polynomial& Polynomial::operator++ (int unused)
{
    Polynomial copy(*this);
    coefficient[0]++;
    return copy;
}
Polynomial Polynomial::operator--()
{
    coefficient[0]--;
    return *this;
}
Polynomial& Polynomial::operator-- (int unused)
{
    Polynomial copy(*this);
    coefficient[0]--;
    return copy;
}

我在尝试做这样的事情时遇到了一个错误:

Polynomial p(。。。某个矢量。。。);

cout << p++;

您正在从您的postfix操作符返回对临时性的引用:

Polynomial& Polynomial::operator++ (int unused)
{
    Polynomial copy(*this);
    coefficient[0]++;
    return copy;     // returning reference to local variable
}

这是未定义的行为。你的返回类型是post和pre-increative,方法不对。你需要这样的东西:

Polynomial& operator++();
Polynomial operator++ (int);
Polynomial& operator--();
Polynomial operator-- (int);