我知道为什么以下不能正常工作,所以我不问为什么。但我感觉不好的是,在我看来,这是一个非常大的编程障碍。
#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;
}
第一个 cout 将不起作用。第二个cout将会。
我的担忧如下:
是否无法想象方法实现者想要返回一个常量引用且不可避免的参数的情况?
我认为这是完全可能的。
在这种情况下你会用 C++ 做什么?
Thanks.
在 C++ 中,建立对象的生命周期非常重要。一种常见的技术是为每个对象确定一个“所有者”。所有者负责确保该对象在需要时就存在,并在不需要时将其删除。
通常,所有者是另一个对象,它将所拥有的对象保存在实例变量中。处理此问题的其他典型方法是使其成为全局变量、类的静态成员、局部变量或使用引用计数指针。
在您的示例中,字符串对象没有明确的所有权。它不属于 main() 函数,因为它不是局部变量,并且没有其他所有者。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)