Как работает возврат по значению?

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); Здесь мы явно создаем анонимный объект и уже на основе анонимного объекта создается копия?


Ответы (0 шт):