Question about reference of the function return object.
...
const std::string& str = a.getString(); //getString ()
return 'std::string' not 'const std:string&',
cout << "Text is: " << str; //use str here will be OK
...
...
const std::string* pStr = &a.getString(); //the return
object of 'std::string' will destruct here
cout << "Text is: " << *pStr; //so using '*pStr' here may
cause a crash
...
function return object, because 'a.getString()' just return a temp
object.
After I debugged this in VS2003, I found that the temp object will
be destroyed at the end of this function.
'function_ref(const A& a)' will be running without any problem in
VS2003 but 'function_point(const A& a)' may cause error.
class A
{
public:
std::string getString() const {
return str_;
}
private:
std:: string str_;
};
function_ref(const A& a){
...
const std::string& str = a.getString(); //getString ()
return 'std::string' not 'const std:string&',
cout << "Text is: " << str; //use str here will be OK
...
}
function_point(const A& a) {
...
const std::string* pStr = &a.getString(); //the return
object of 'std::string' will destruct here
cout << "Text is: " << *pStr; //so using '*pStr' here may
cause a crash
...
}
My question is if there had any problem with reference of the
function return object, because 'a.getString()' just return a temp
object.
After I debugged this in VS2003, I found that the temp object will
be destroyed at the end of this function.
'function_ref(const A& a)' will be running without any problem in
VS2003 but 'function_point(const A& a)' may cause error.
I want to ask if that reference of a temp return value delay the
destruction is just a property of MS VS2003 or C++ standard.