Как работает возврат по значению?
class Dollars {
private:
int dollars;
public:
Dollars(int dol) : dollars(dol) {}
friend Dollars get(const Dollars&, const Dollars&);
};
Dollars get(const Dollars& dol, const Dollars& dd) {
return dol.dollars + dd.dollars;
}
В строчке return dol.dollars + dd.dollars; создается анонимный объект(и уничтожается в этой строчке??) и создается копия на основе анонимного объекта, которая в свою очередь возвращается в caller, у которой область видимости в пределах выражения?
А если сделать так:
return Dollars(dol.dollars + dd.dollars); Здесь мы явно создаем анонимный объект и уже на основе анонимного объекта создается копия?