我对 C++ 相当陌生,我知道返回局部变量的三种方法,它们都有其缺点:
Person& getPerson()
{
Person bob;
return bob;
}
显然不是一个好主意。
Person getPerson()
{
Person bob;
return bob;
}
没有机会出现空指针或悬空引用,但会影响性能。
Person* getPerson()
{
return new Person();
}
没有空指针的机会,但这肯定违反了 OO 设计的基本规则。另一个对象将不得不删除它 - 但它为什么必须这样做?getPerson() 方法的实现与它无关。
所以,我正在寻找替代方案。我听说过共享指针和智能指针(标准和 Boost),但我不确定它们中的任何一个是否旨在处理这个问题。你们有什么建议?