当您通过引用返回对象时,您何时需要担心该对象将被销毁?

Avi*_*ano 1 c++

你有以下几点:

Person& getPersonByName(string name);
Run Code Online (Sandbox Code Playgroud)

在什么情况下你需要担心一旦方法结束就会破坏getPersonByName中的返回者,这样调用者方法就可以处理被破坏的数据?

谢谢

And*_*rew 8

你应该.

这是dangling reference例如:

Person &getPerson()
{
    Person p;
    return p;
} //p is destroyed here
Run Code Online (Sandbox Code Playgroud)

但这没关系:

Person &getPerson()
{
    static Person p;
    return p;
}
Run Code Online (Sandbox Code Playgroud)

您还可以返回一个reference内部变量,object并且可以使用它直到object被销毁:

class Foo
{
public:
    int & getA() {return a;}

private:
    int a;
};
Run Code Online (Sandbox Code Playgroud)

  • "如果哟返回const并且它保证变量的生命时间将延长到参考的生命周期".真?你能提供标准报价吗? (3认同)
  • "在这种情况下,保证变量的使用寿命会延长到参考的生命周期":在这种情况下不是这样.首先,用于初始化引用的_variables_的生命周期永远不会改变; 第二,即使对于临时工具,返回引用也是一个例外(因为延长临时超出函数结束的生命周期是不可实现的); 第三,即使它是,它通常也不会帮助你,因为返回引用的生命周期只是包含调用的完整表达式的生命周期. (3认同)