Fraction& Fraction::operator= (const Fraction &fraction)
{
// do the copy
m_numerator = fraction.m_numerator;
m_denominator = fraction.m_denominator;
return *this;
}
int main()
{
Fraction fiveThirds(5, 3);
Fraction f;
f = fiveThirds; // calls overloaded assignment
std::cout << f;
return 0;
}
在重载赋值运算符时,return this
的概念有些问题。
在主函数f = fiveThirds
中将调用赋值运算符,并将返回*this
,即返回Fraction
对象!
问题是f = fiveThirds
将返回对象,但是没有任何小数部分对象可以接收它!
在分配链 x=y=z
中,y=z
返回一个对象(k
),该对象将分配给x
,但是{{ 1}}还会返回一个对象,那么谁会收到这个对象?
我已尽力描述我的问题。
答案 0 :(得分:2)
问题是f = fourThirds将返回该对象,但是没有任何小数对象可以接收它!
更准确地说,它返回对对象的引用。
那谁收到这个物品?
返回值被丢弃。
没问题。