“ return * this”赋值运算符重载

时间:2019-03-31 14:06:02

标签: c++ operator-overloading this-pointer

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}}还会返回一个对象,那么谁会收到这个对象?

我已尽力描述我的问题。

1 个答案:

答案 0 :(得分:2)

  

问题是f = fourThirds将返回该对象,但是没有任何小数对象可以接收它!

更准确地说,它返回对对象的引用。

  

那谁收到这个物品?

返回值被丢弃。

没问题。