¿Es hora de abandonar la transmisión de const std::string& en los parámetros de funciones?
¡Hola a todos! Soy nuevo en C++ y constantemente veo en libros y artículos antiguos el consejo de pasar strings a funciones como const std::string&. Pero recientemente me topé con una discusión donde decían que en C++11 y versiones posteriores esto ya no es una buena práctica. Al parecer, debido a la move semantics, es más eficiente pasar strings por valor en lugar de por referencia constante.
Estoy completamente confundido. Aquí hay un ejemplo de mi código:
```cpp
void processData(const std::string& name) {
// ... algún trabajo con name, pero sin copia
std::cout << name << std::endl;
}
void storeData(const std::string& name) {
// Aquí quiero guardar name en un miembro de la clase
m_name = name; // ¿esto es una copia?
}
```
El primer caso es solo lectura del string. El segundo es guardarlo en un campo del objeto. ¿Realmente const std::string& está obsoleto? ¿Cuándo debería usarlo y cuándo es mejor pasar el string por valor (std::string)? ¿O tal vez debería usar std::string_view? Por favor, explíquenme de manera sencilla, con ejemplos, qué opción es más óptima en cada caso.