您有以下:当你通过引用返回对象时,你什么时候需要担心对象会被销毁?
Person& getPersonByName(string name);
在你需要什么情况下要担心来自getPersonByName回人的方法结束,以便调用者方法对数据的破坏工作,将尽快销毁?
谢谢
您有以下:当你通过引用返回对象时,你什么时候需要担心对象会被销毁?
Person& getPersonByName(string name);
在你需要什么情况下要担心来自getPersonByName回人的方法结束,以便调用者方法对数据的破坏工作,将尽快销毁?
谢谢
你应该。
这是dangling reference
例如:
Person &getPerson()
{
Person p;
return p;
} //p is destroyed here
但是,这是确定的:
Person &getPerson()
{
static Person p;
return p;
}
您也可以返回reference
到object
内部的一些变量,这是确定使用它,直到object
被销毁:
class Foo
{
public:
int & getA() {return a;}
private:
int a;
};
const会阻止返回被破坏,直到调用者结束为止? – 2012-07-31 12:54:27
“如果你返回const并且它保证变量的生存时间将延长到参考的生命周期”。真?你能提供标准报价吗? – 2012-07-31 12:56:15
@yurikilochek:here:http://herbsutter.com/2008/01/01/gotw-88-a-candidate-for-the-most-important-const/ – Andrew 2012-07-31 12:57:30
如果Person
在函数返回时不会被销毁。实例包括
这种情况就像在安德鲁答案中。 – 2012-07-31 12:53:29
如果你返回一个对一个本地非静态变量的引用,那么它将导致麻烦,因为当函数返回时局部变量总是被破坏,留给你一个对一个不存在的对象的引用。 – 2012-07-31 12:53:07
@ user1495181,我修改了一下你的问题。您的原始问题意味着返回参考从不是问题。我已经纠正了这一点。 – 2012-08-01 12:20:12
@Aaron谢谢 – 2012-08-01 12:43:01