Я пытаюсь понять, почему ссылки используются при перегрузке оператора C ++. Например, в следующем фрагменте кода:
GenericObject& operator=(const GenericObject &rhs)
{
if (&rhs == this)
return *this;
objectAttribute = GenericObject.objectAttribute;
return *this;
}
У меня есть три вопроса:
- Почему функция возвращает ссылку?
- Почему функцию взять в ссылку? Чтобы избежать затрат на копирование содержимого объекта (что было бы необходимо, если бы объект GenericObject был параметром вместо ссылки на GenericObject)?
- Почему ссылка используется в третьей строке, когда сравнивая правую сторону с этим?