您有以下内容:
Person& getPersonByName(string name);
在什么情况下你需要担心一旦方法结束就会破坏getPersonByName中的返回人员,这样调用者方法就会对被破坏的数据起作用?
谢谢
答案 0 :(得分:8)
你应该。
这是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;
};
答案 1 :(得分:3)
如果函数返回时Person
没有被销毁。例子包括