You*_*oob 2 c++ oop class operator-overloading object
所以我为具有变量num和den的fraction类写了这个重载函数.
fraction operator +(fraction & f1, fraction & f2)
{
fraction temp;
temp.num = (f1.num * f2.den ) + ( f1.den * f2.num );
temp.den = (f1.den * f2.den );
return temp;
}
Run Code Online (Sandbox Code Playgroud)
如果我使用这个代码f1 = f1+f2,它运行正常.但我想使用它f1 = f2+fraction(3,4)
如果我尝试以这种方式使用它,它显示无效的操作数分数和分数.任何人都可以识别出这种错误及其发生的原因.提前致谢.
类型fraction&要求传递的参数必须是类型的左值(可以采用其地址的对象)fraction.但它fraction(3,4)是一个临时对象,而不是左值,因此不能通过引用传递.
但const fraction &不需要左值,临时变量可以用作值.
而f1和f2不会改变的operator +,所以你可以和应该改变参数声明const &,允许按引用传递的临时对象.
fraction operator +(const fraction & f1, const fraction & f2)
Run Code Online (Sandbox Code Playgroud)