O que significa const no final da declaração de uma função-membro de classe em C++?
Olá, colegas! Comecei a estudar C++ recentemente e me deparei com uma sintaxe que é completamente incompreensível para mim. Encontro no código declarações de métodos de classe onde, após a lista de parâmetros, vem a palavra-chave `const`. Por exemplo:
```cpp
class MyClass {
public:
int getValue() const; // O que significa este const?
void setValue(int v);
};
```
Eu entendo que `const` antes do tipo de uma variável a torna imutável (por exemplo, `const int x = 5;`). Mas o que `const` faz no final da declaração de uma função? Tentei escrever tal método, mas quando dentro dele tentei modificar um campo da classe, o compilador emitiu um erro. Por quê?
Aqui está meu código que não compila:
```cpp
class Counter {
private:
int count = 0;
public:
int getCount() const {
count = 10; // Erro: não é possível modificar membro da classe em uma função const
return count;
}
};
```
Explique, por favor, para que serve esse `const`? Quando devo usá-lo e quando não? E como isso se relaciona com o funcionamento?