¿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!