Function Return Values
Some functions return a value when they have finished performing the task for which they were designed. Space for a temporary return object is usually a register (if it can fit), but sometimes it is an object allocated on the stack. The temporary return object is initialized when the return statement is executed and exists just long enough to be used in whatever expression contains the function call. It is generally a copy of an object that is local to the function or an object constructed from an expression in the return statement.