¿Qué significa const al final de la declaración de una función miembro de una clase en C++?
¡Hola, colegas! Empecé a estudiar C++ no hace mucho y me encontré con una sintaxis que me resulta completamente incomprensible. En el código veo declaraciones de métodos de clase donde después de la lista de parámetros aparece la palabra clave `const`. Por ejemplo:
```cpp
class MyClass {
public:
int getValue() const; // ¿Qué significa este const?
void setValue(int v);
};
```
Entiendo que `const` antes del tipo de una variable la hace inmutable (por ejemplo, `const int x = 5;`). Pero ¿qué hace `const` al final de la declaración de una función? Intenté escribir un método así, pero cuando dentro de él intenté cambiar un campo de la clase, el compilador dio un error. ¿Por qué?
Aquí está mi código que no compila:
```cpp
class Counter {
private:
int count = 0;
public:
int getCount() const {
count = 10; // Error: no se puede modificar un miembro de la clase en una función const
return count;
}
};
```
Expliquen, por favor, ¿para qué sirve ese `const`? ¿Cuándo se debe usar y cuándo no? ¿Y cómo se relaciona esto con el funcionamiento?