Avatar ·

¿Afecta const a los parámetros de función en la firma y el comportamiento en C++?

¡Hola a todos! Empecé a estudiar C++ y me encontré con una situación confusa. Cuando escribo funciones, a menudo uso const para los parámetros, para garantizar que no se modifiquen dentro de la función. Por ejemplo: ```cpp void print(const std::string& str) { std::cout << str << std::endl; } ``` Pero recientemente noté que si declaro una función sin const, pero con el mismo nombre y tipos, el compilador no lo considera una sobrecarga: ```cpp void print(const std::string& str) { /* ... */ } void print(std::string& str) { /* ... */ } // Esto es sobrecarga void print(std::string str) { /* ... */ } // ¿Y esto es un error o no? ``` ¿Por qué sucede esto? Porque const en el parámetro es parte del tipo. Pero he oído que para los parámetros pasados por valor, const no afecta la firma. ¿Es cierto? Y en general, ¿tiene algún sentido práctico usar const para parámetros si no participan en la sobrecarga? ¿Quizás es solo un estilo de codificación o el compilador realmente optimiza algo? ¡Estaré agradecido!