Предположим есть некий класс который управляет неким ресурсом и у нас есть следующий код для оператора присваивания. Resource& Resource::operator=(const Resource& rhs) { this->someProperty = rhs.someProperty; return *this; } Вопрос, зачем нужно возвращать *this? Ну присвоили мы, и все хорошо: Resource resource1; Resource resource2; resource1 = resource2; Зачем самого себя еще возвращать?
Ответ
Это нужно для того чтобы была возможность писать так:
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; // а так нельзя
Комментариев нет:
Отправить комментарий