【基础问题求助】有关重载操作符+的问题
最近写一个大整数类,里面重载操+作符,我们一般是这么做的:
BigInt operator+(const BigInt &lval, const BigInt& rval)
{
BigInt temp(lval);
temp += rval;
return temp;
}
没有任何问题,且可以连加;
自己随便改改成这样:
BigInt operator+(BigInt &lval, const BigInt& rval)
{
lval += rval;
return lval;
}
做一次加法可以,但连加就不行,比如b1,b2,b3都是BigInt, b1+b2+b3就通不过编译,b1+b2却可以,为什么呢?
然后改成这样:
BigInt operator+(BigInt lval, const BigInt& rval)
{
lval += rval;
return lval;
}
也没有任何问题(效率低点),且可以连加,这又是为什么。。。
有高手能给讲讲吗?为什么第一种和第三种可以连加,而第二中不行呢
补充:其中的"+="也是重载的,返回*this,BigInt内部数据是标准库模版string类型
[解决办法]