Теперь я действительно запутался в том, как и какой метод использовать для возврата объекта из функции. Я хочу получить обратную связь по решениям для данных требований.
Сценарий A: Возвращаемый объект должен храниться в переменной, которая не должна изменяться в течение всего срока ее службы. Таким образом,
const Foo SomeClass::GetFoo() {
return Foo();
}
вызывается как:
someMethod() {
const Foo& l_Foo = someClassPInstance->GetFoo();
//...
}
Scneraio B: Возвращаемый объект должен храниться в переменной, которая будет изменена в течение всего срока ее службы. Таким образом,
void SomeClass::GetFoo(Foo& a_Foo_ref) {
a_Foo_ref = Foo();
}
вызывается как:
someMethod() {
Foo l_Foo;
someClassPInstance->GetFoo(l_Foo);
//...
}
У меня есть один вопрос здесь: Давайте скажем, что Foo не может иметь конструктор по умолчанию. Тогда как бы вы справились с этим в этой ситуации, поскольку мы больше не можем писать это:
Foo l_Foo
Сценарий C:
Foo SomeClass::GetFoo() {
return Foo();
}
вызывается как:
someMethod() {
Foo l_Foo = someClassPInstance->GetFoo();
//...
}
Я думаю, что это не рекомендуемый подход, так как он потребует создания дополнительных временных рядов.
Как вы думаете? Кроме того, вы рекомендуете лучший способ справиться с этим?