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++做什么?
谢谢.
在C++中,建立对象的生命周期很重要.一种常见的技术是确定每个对象的"所有者".所有者负责确保对象在需要时存在,并在不需要时将其删除.
通常,所有者是另一个将拥有的对象保存在实例变量中的对象.处理此问题的其他典型方法是使其成为类的全局,静态成员,局部变量或使用引用计数指针.
在您的示例中,没有明确的字符串对象所有权.它不归main()函数所有,因为它不是局部变量,也没有其他所有者.