函数可以返回左值,不能返回局部对象的引用

//函数定义
char &get_val(string &str,string::size_type ix)
{
     return str[ix];
}
//函数调用
main()
{
    string s("123456");
    cout<<s<<endl;
    get_val(s,0)='a';
    cout<<s<<endl;    
}

上面程序返回一个左值

 

千万不要返回局部对象的引用,可以返回局部对象的非引用,因为引用是局部变量的本身,本身已经在函数结束的时候死亡;而非引用是局部变量的副本,

const string &mainip(const string &s)
{
    string ret=s;
    return ret;
}
posted @ 2013-07-09 11:08  songnb_7  阅读(227)  评论(0)    收藏  举报