Амперсанд и разыменование `this` при перегрузке операторов в C ++ - PullRequest
0 голосов
/ 03 мая 2020

Я думаю, что мне не хватает чего-то очевидного, но я не вижу, что.

Я начинаю создавать классы, которые требуют перегрузки операторов. Я не понимаю одно соглашение, которое я читаю для их перегрузки: в приведенном ниже коде я беру в качестве примера оператор +=. Теперь в этом примере перегрузка оператора объявляется как ссылка на объект класса, но затем оператор return отменяет ссылку указатель на текущий объект, поэтому он должен возвращать свое значение (верно?). Для меня это выглядит как противоречие. Я действительно ожидал бы, что оператор return вернет адрес, а не значение.

NewClass& NewClass::operator+=(...){
   //some code here
   return *this;
}

Я вижу этот вопрос относительно возврата *this, и я понимаю логи c там, но это не отвечает моему непониманию того, что я вижу как противоречие между объявлением возврата ссылки и возвратом того, что кажется значением.

Как правильно интерпретировать этот код?

...