Middle
Waarom is het nodig om bij het overbelasten van de toewijzingsoperator een verwijzing naar het huidige object terug te geven?
sobes.tech AI
Antwoord van AI
Для обеспечения возможности цепочечного присваивания, например: a = b = c;.
class MyClass {
public:
int value;
MyClass& operator=(const MyClass& other) {
if (this != &other) { // Проверка на самоприсваивание
value = other.value;
}
return *this; // Возвращаем ссылку на текущий объект
}
};
Без возврата ссылки на текущий объект *this, оператор присваивания вернет временный объект или значение, что сделает цепочечное присваивание невозможным или неопределенным. Возврат по ссылке избегает копирования и позволяет продолжить операцию присваивания с результатом предыдущей: (a = b) = c; (хотя такой синтаксис используется реже).