在C++中重载Operator +

5 c++ operator-overloading operators

好的,我正在编写一本书并尝试学习C++运算符重载.我创建了一个BigInt类,它为构造函数接受一个int(最初设置为0).我重载了+ =方法,它在以下代码中运行正常:

BigInt x = BigInt(2);
x += x;
x.print( cout );
Run Code Online (Sandbox Code Playgroud)

代码将输出4.因此,我正在使用以下代码重载全局运算符+:

BigInt operator+(const BigInt lhs, const BigInt rhs)
{
    BigInt returnValue(lhs);
    returnValue += rhs;
    return returnValue;
}
Run Code Online (Sandbox Code Playgroud)

这也适用于以下代码:

BigInt x = BigInt(1);
BigInt y = BigInt(5);
BigInt z = x + y;
z.print();
Run Code Online (Sandbox Code Playgroud)

这打印出6.然而,当我尝试执行以下代码时,它只是不起作用.这本书不能很好地解释,并暗示它应该只是工作.

BigInt x = BigInt(1);
BigInt z = x + 5;
z.print();
Run Code Online (Sandbox Code Playgroud)

这打印出来1.我不知道为什么z应该为6时为1.我在网上搜索并在stackoverflow上搜索但是我找不到其他任何有问题的人.有些人很接近,但答案却不合适.任何帮助深表感谢!

Any*_*orn 3

最有可能的问题出在+=操作员身上。发布它的代码。