Efficiency Considerations
Temporary objects are often created by implicit type
conversions or when arguments are returned by value.
When an operator and its operands are evaluated, an
rvalue is often created.
That rvalue is a temporary on the stack that can be used
within a larger expression. The lifetime of the temporary
is from the time it is created until the end of the statement
in which it is used.
While the use of temporaries is necessary to protect the
original contents of the operator's operands, it does require
additional memory and extra (and sometimes redundant)
copy operations.