Correct - it isnt as efficient, but when you return a reference, the objects you are refering to will have its destructor called before you have the oportunity to use it (it goes out of scope), therefore your code is refering to an object that no longer exists - a sure way to mess things up!!
Originally posted by Zahl
Why can't you just return a reference if that's effecient?
Because if you return a HOLE object you actually copy the hole thing while if you only return a reference you just copy the adress.