перегрузка оператора присваивания "return * this" - PullRequest
0 голосов
/ 31 марта 2019
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 вернет объект, но нет объекта Fraction для его получения!

В цепочке присваиваний x=y=z, y=z вернет объект (k), который будет присвоен x, однако x=k также вернет объект, так кто же получит этот объект?

Я сделал все возможное, чтобы описать мою проблему.

1 Ответ

2 голосов
/ 31 марта 2019

Проблема в том, что f = fiveThirds вернет объект, но нет объекта Fraction для его получения!

Точнее, он возвращает ссылку на объект.

так, кто получает этот объект?

Возвращаемое значение отбрасывается.

Нет проблем.

...