返回作为const引用的参数的问题

use*_*855 2 c++ pass-by-reference

我知道为什么以下不起作用,所以我不是在问为什么.但我感觉很糟糕,在我看来,这是一个非常大的编程障碍.

#include <iostream>
#include <string>
using namespace std;

string ss("hello");

const string& fun(const string& s) {
        return s;
}

int main(){
        const string& s = fun("hello");
        cout<<s<<endl;
        cout<<fun("hello")<<endl;
}
Run Code Online (Sandbox Code Playgroud)

第一个cout不起作用.第二个cout会.

我关注的是:

是不是可以想象一个方法实现者想要返回一个const引用并且不可避免的参数的情况?
我认为这是完全可能的.
在这种情况下你会用C++做什么?

谢谢.

Kri*_*son 5

在C++中,建立对象的生命周期很重要.一种常见的技术是确定每个对象的"所有者".所有者负责确保对象在需要时存在,并在不需要时将其删除.

通常,所有者是另一个将拥有的对象保存在实例变量中的对象.处理此问题的其他典型方法是使其成为类的全局,静态成员,局部变量或使用引用计数指针.

在您的示例中,没有明确的字符串对象所有权.它不归main()函数所有,因为它不是局部变量,也没有其他所有者.