好的,我正在读一本书,尝试学习C++运算符重载。我创建了一个BigInt类,该类为构造函数采用了一个int(初始设置为0)。我重载了+ =方法,在下面的代码中它可以正常工作:

BigInt x = BigInt(2);
x += x;
x.print( cout );

该代码将输出4。因此,然后我正在使用以下代码来重载global运算符+:
BigInt operator+(const BigInt lhs, const BigInt rhs)
{
    BigInt returnValue(lhs);
    returnValue += rhs;
    return returnValue;
}

对于以下代码,这也可以正常工作:
BigInt x = BigInt(1);
BigInt y = BigInt(5);
BigInt z = x + y;
z.print();

输出为6。但是,当我尝试执行以下代码时,它根本不起作用。这本书解释得不好,暗示它应该简单地工作。
BigInt x = BigInt(1);
BigInt z = x + 5;
z.print();

这样会打印出1。我不确定z为何应为6时为什么z为1。我在网上和在stackoverflow上进行了搜索,但找不到其他完全像这样的问题。有些很接近,但是答案就不合适了。任何帮助深表感谢!

最佳答案

最有可能的问题是+=运算符。为其发布邮政编码。

关于c++ - C++中的重载运算符+,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2353142/

10-13 06:31