#cpp
Предположим есть некий класс который управляет неким ресурсом и у нас есть следующий код для оператора присваивания. Resource& Resource::operator=(const Resource& rhs) { this->someProperty = rhs.someProperty; return *this; } Вопрос, зачем нужно возвращать *this? Ну присвоили мы, и все хорошо: Resource resource1; Resource resource2; resource1 = resource2; Зачем самого себя еще возвращать?
Ответы
Ответ 1
Это нужно для того чтобы была возможность писать так: first = second = third Если вы объявите в качестве типа возвращаемого значения void, то не сможете полученному результату какое-либо значение/ Маленький пример: class Int { public : int Variable; void operator= (const int& rhs); }; void Int::operator= (const int& rhs) { this->Variable = rhs; } Int i, g; i.Variable = 10; g.Variable = 10; i = 30; // так можно i = g = 30; // а так нельзяОтвет 2
Ответ уже есть на SOV Как и сказал @DreamChild без возврата ссылки на объект вы не сможете сделать следующее: Resource resource1; Resource resource2; Resource resource3; resource1 = resource2 = resource3;
Комментариев нет:
Отправить комментарий