c++函数返回值是一个引用

函数返回值是一个引用的情况:

1.值是如何被返回的:

返回的值用于初始化调用点的一个临时量,该临时量就是函数调用的结果。

如果函数返回引用,则该引用仅是它所引对象的一个别名。

2.不能返回局部对象的引用或指针:

函数完成后,他所占的内存空间将被释放,函数的终止意味着局部变量的引用将指向不再有效的内存区域。

const string &mainip(){
    string ret;
    if(!ret.empty())
        return ret;//错误,返回局部对象的引用
    else
        return "empty";//错误,“empty”是一个局部临时量
}

3.引用反回左值:

左值:赋值运算符需要一个(非常量)左值作为其左侧运算对象,得到的结果也仍然是一个左值。当一个对象被用作右值的时候,用的是对象的值(内容);当对象被用作左值的时候,用的是对象的身份(内存中的位置)。

char &get_val(string &str , string::size_type ix){
    return str[ix];
}
int main(){
    string s("a value");
    cout << s << endl;
    get_val(s,0) = 'A';//将s[0]的值改为A,调用是个左值,和其他左值一样也能出现在赋值运算符左侧。
    cout << s << endl;//输出A value
    return 0;
}
发布了218 篇原创文章 · 获赞 131 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/qq_40828914/article/details/104206868