O que significa const no final da declaração de uma função-membro de classe em C++?
Olá a todos! Comecei a estudar C++ depois de Python e Java, e me deparei com uma sintaxe confusa. Em código alheio, vejo frequentemente que após a declaração de uma função-membro de classe vem a palavra-chave `const`. Por exemplo:
```cpp
class MyClass {
public:
int getValue() const; // Este const no final
void setValue(int v);
};
```
Eu entendo que `const` antes de uma variável significa que a variável não pode ser alterada. Mas o que significa `const` *após* a lista de parâmetros? Tentei escrever sem ele — o compilador não reclama. Então para que serve? Isso afeta como posso chamar a função? Posso colocá-lo em qualquer função? Ou apenas em getters?
Escrevi uma classe simples:
```cpp
class Counter {
public:
Counter() : count(0) {}
int getCount() const { return count; } // Funciona
void increment() { count++; } // Funciona
private:
int count;
};
```
Mas quando tentei fazer `void increment() const { count++; }` — o compilador deu erro. Por quê?