你有以下几点:
Person& getPersonByName(string name);
Run Code Online (Sandbox Code Playgroud)
在什么情况下你需要担心一旦方法结束就会破坏getPersonByName中的返回者,这样调用者方法就可以处理被破坏的数据?
谢谢
你应该.
这是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)