C++ Refrence to the temp return value

Question about reference of the function return object.

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.

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值