A temporary object is destroyed at the end of the full expression in which it was created. Consider the following example:
#include #include // for strlen()string s1, s2;int len=(s1+s2).c_str(); // temporary created
When the expression ‘s1+s2’ is evaluated, C++ creates a temporary object that stores the result. C++ destroys the temporary only after the ‘nearest semicolon’. In our example, only after the c_str() call and the assignment to len have taken place does C++ destroy the temporary object. Remember that temporary objects are always allocated on the stack. Therefore, you should never attempt to destroy them explicitly.