1

您有以下内容:

Person& getPersonByName(string name);

在什么情况下,您需要担心 getPersonByName 的返回人员会在方法结束后立即被破坏,因此调用方方法将处理被破坏的数据?

谢谢

4

2 回答 2

8

你应该。

例如dangling reference

Person &getPerson()
{
    Person p;
    return p;
} //p is destroyed here

但这没关系:

Person &getPerson()
{
    static Person p;
    return p;
}

您还可以将 a 返回reference到 an 的某个内部变量,并且可以在销毁object之前使用它:object

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

private:
    int a;
};
于 2012-07-31T12:51:11.277 回答
3

如果Person函数返回时不会被销毁。例子包括

  • 静态存储持续时间变量
  • 返回函数是其方法的类的成员变量。
于 2012-07-31T12:51:55.423 回答