Esto depende del tipo de artículo devuelto. Si regresa por valor, se realiza una nueva copia de la variable para devolverla a la persona que llama. Me adelgaza caso de que no necesita preocuparse de duración del objeto, pero puede que tenga que preocuparse por los costos de los objetos de copia (pero por favor no lo hacen de forma prematura optimze - corrección es mucho más importante):
std::string someFunc(std::string& const s)
{
return s + "copy";
}
Si el función devuelve una referencia, luego debe tener cuidado con lo que está devolviendo porque su vida útil debe extenderse más allá de la duración de la función y la persona que llama no necesariamente podrá delete
si está usando new
para crear el objeto:
std::string& someFunc2(std::string const& s)
{
return s + "reference to a copy"; // this is bad - the temp object created will
// be destroyed after the expression the
// function call is in finishes.
// Some, but not all, compilers will warn
// about this.
}
Por supuesto, los indicadores de devolución tendrán consideraciones de por vida similares.
¡Es un buen artículo! Lo marqué como favorito para compartirlo con personas que aprendieron sobre la pila :) –
El estándar C++ no tiene noción de una pila. – fredoverflow
@CMS Tengo curiosidad por saber si hay una sección en el estándar de C++ que admita esta afirmación. Por lo que yo sé, esta información sobre la pila generalmente es parte de la convención de llamadas de la arquitectura de CPU específica y no tiene que ser la misma para cada plataforma disponible. – MKroehnert