Sobes.tech
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
}