Devolver objeto de la función
Ahora estoy realmente confundido sobre cómo y qué método usar para devolver el objeto de una función. Quiero algunos comentarios sobre las soluciones para los requisitos dados.
Escenario A: el objeto devuelto debe almacenarse en una variable que no necesita modificarse durante su vida útil. Así,
const Foo SomeClass::GetFoo() {
return Foo();
}
invocado como:
someMethod() {
const Foo& l_Foo = someClassPInstance->GetFoo();
//...
}
Scneraio B: El objeto devuelto debe almacenarse en una variable que se modificará durante su vida útil. Así,
void SomeClass::GetFoo(Foo& a_Foo_ref) {
a_Foo_ref = Foo();
}
invocado como:
someMethod() {
Foo l_Foo;
someClassPInstance->GetFoo(l_Foo);
//...
}
Tengo una pregunta aquí: Digamos que Foo no puede tener un constructor predeterminado. Entonces, ¿cómo lidiarías con eso en esta situación, ya que ya no podemos escribir esto?
Foo l_Foo
Escenario C:
Foo SomeClass::GetFoo() {
return Foo();
}
invocado como:
someMethod() {
Foo l_Foo = someClassPInstance->GetFoo();
//...
}
Creo que este no es el enfoque recomendado ya que incurriría en la construcción de temporarios adicionales.
Qué piensas ? Además, ¿recomienda una mejor manera de manejar esto?