Junior
Fale sobre métodos constantes em C/C++.
sobes.tech IA
Resposta da IA
Um método constante é um método de classe declarado com a palavra-chave const após a lista de parâmetros. Garantia que o método não altera o estado do objeto da classe (this).
Propriedades principais e aplicações:
- Garantia de imutabilidade: Dentro de um método constante, não é possível modificar direta ou indiretamente os membros de dados não estáticos do objeto.
- Chamada para objetos constantes: Métodos constantes podem ser chamados tanto para objetos constantes quanto para não constantes. Métodos não constantes só podem ser chamados para objetos não constantes.
- Sobrecarga: O método pode ser sobrecarregado de acordo com a constância. Isso permite ter dois métodos com a mesma assinatura (nome e parâmetros), mas um será constante e o outro não.
- Aplicação: São usados para métodos acessores (getters), que simplesmente retornam o valor de um membro de dados sem modificar o objeto, assim como em funções que aceitam referências ou ponteiros constantes para objetos.
Exemplo:
class MyClass {
public:
int getValue() const { // Método constante
// Pode ler member_ = 10;, mas não escrever
return member_;
}
void setValue(int val) { // Método não constante
member_ = val; // Pode modificar o membro de dados
}
private:
int member_;
};
void printValue(const MyClass& obj) {
obj.getValue(); // OK: chama o método constante para o objeto constante
// obj.setValue(20); // Erro: não é possível chamar método não constante para objeto constante
}