Я читаю главу 7. Классы C ++ Primer от Стэнли Б. Липпмана Но у меня есть вопросы по этим кодам
struct Sales_data{
string isbn() const { return bookNo;}
Sales_data& combine(const Sales_data&);
double avg_price() const;
string bookNo;
unsigned units_sold = 0;
double revenue = 0.0;
};
Sales_data& Sales_data::combine(const Sales_data& rhs){
units_sold += rhs.units_sold;
revenue += rhs.revenue;
return *this;
}
Что меня удивляет, так это метод, который возвращает ссылку на вызывающий объект Sales_data, когда мы хотим изменить член объекта.
Я думаю, что вместо использования этого метода я могу объявить метод void, что я понимаю, когда объектный вызов объединяет метод, units_sold равно это-> единицы_продано и выручка составляет это-> выручка .
По этой причине я думаю, что мне не нужно использовать метод, который возвращает ссылку на вызывающий объект, когда я хочу изменить член объекта.
void Sales_data::combine(const Sales_data& rhs){
units_sold += rhs.units_sold;
revenue += rhs.revenue;
}
// Also change the function in the struct
I Мы проверили его, и метод void все еще может изменить член объекта, который вызывает метод объединения. Так есть ли различия между этими двумя методами?
Спасибо, что читаете и помогаете мне!