class Currency
{
public:
explicit Currency(unsigned int value);
// method form of operator+=
Currency &operator +=(const Currency &other); // understood!
...
};
Следующий код показывает эквивалентный API, используя бесплатную функцию версии оператора:Свободные операторы против операторов-членов
class Currency
{
public:
explicit Currency(unsigned int value);
...
};
// free function form of operator+=
Currency &operator +=(Currency &lhs, const Currency &rhs); // ???
Question1> Почему свободная функция возвращает Currency&
вместо Currency
? Является ли это хорошей практикой?
Вопрос2> В реализации, что переменная должна использоваться для возврата, lhs
или rhs
?
Или сделайте его другом. –
Хорошая точка. Я обновил ответ. –
Друг - это зло. – q0987