605 votos

Son los días de pasar const std::string & como un parámetro más?

Oí una reciente charla por Herb Sutter, quien sugirió que las razones para aprobar std::vector y std::string por const & son en gran parte desaparecido. Él sugirió que la escritura de una función como la siguiente ahora es preferible:

std::string do_something ( std::string inval )
{
   std::string return_val;
   // ... do stuff ...
   return return_val;
}

Entiendo que el return_val será un r-value en el punto de la función de devoluciones y por lo tanto puede ser devuelto con mover la semántica, que son muy baratos. Sin embargo, inval todavía es mucho más grande que el tamaño de una referencia (que es generalmente implementados como un puntero). Esto es así porque, std::string tiene varios componentes, incluyendo un puntero a la pila y un miembro char[] de cadena corta de optimización. Así que me parece que pasar por referencia es una buena idea.

¿Alguien puede explicar por qué la Hierba podría haber dicho esto?

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X