0Pricing
C++ Academy · Aula

Funções-membro const

Marque métodos somente para leitura

Funções-membro const é uma aula grátis de C++ Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C++ Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C++ Academy inclui 4 aulas no total.

O que é uma função membro const

Uma função membro marcada como const garante que não modificará o estado observável do objeto. A palavra-chave vem depois da lista de parâmetros.

#include <iostream>

class Counter {
    int n = 0;
public:
    int value() const { return n; }   // read-only
    void inc() { ++n; }
};

int main() {
    Counter c;
    c.inc();
    std::cout << c.value() << "\n";
}

Objetos const chamam métodos const

Em um objeto const, só é possível chamar funções membro const. Métodos não const não são permitidos.

#include <iostream>

class Counter {
    int n = 0;
public:
    int value() const { return n; }
    void inc() { ++n; }
};

int main() {
    const Counter c;
    std::cout << c.value() << "\n";   // OK
    // c.inc();                        // ERROR
}

this se torna const

Dentro de uma função membro const, this é um ponteiro para const, portanto o compilador rejeita qualquer tentativa de modificar membros.

Marque como const todo método somente leitura

Acessores, consultas e funções de impressão devem ser todos const. Isso permite que funcionem com objetos const e referências const.

Sobrecarga com const

Você pode fornecer uma versão const e outra não const de um método; o compilador escolhe com base no fato de o objeto ser const ou não.

#include <iostream>
#include <vector>

class Box {
    std::vector<int> v{1, 2, 3};
public:
    int& at(int i) { return v[i]; }              // mutable access
    const int& at(int i) const { return v[i]; }  // read-only access
};

int main() {
    Box b;
    b.at(0) = 99;
    std::cout << b.at(0) << "\n";
}

A palavra-chave mutable

Membros mutable podem mudar mesmo dentro de um método const — o que é útil para memórias cache ou contadores que não fazem parte do estado lógico.

#include <iostream>

class Cache {
    mutable int hits = 0;
    int data = 42;
public:
    int get() const { ++hits; return data; }   // hits is mutable
    int hitCount() const { return hits; }
};

int main() {
    Cache c;
    c.get(); c.get();
    std::cout << c.hitCount() << "\n";
}

const lógico versus const físico

const protege o estado lógico do objeto; mutable permite que detalhes de implementação, como memórias cache, mudem sem quebrar essa garantia.

Métodos const e referências const

Uma função que recebe um const& só pode chamar métodos const nesse objeto — outro motivo para marcar as consultas como const.

#include <iostream>

class Counter {
    int n = 5;
public:
    int value() const { return n; }
};

void report(const Counter& c) {
    std::cout << c.value() << "\n";   // needs value() to be const
}

int main() { Counter c; report(c); }

Retornando referências const

Acessores const geralmente retornam const& para expor membros sem permitir sua modificação ou cópia.

Não remova const com conversões

Usar const_cast para modificar um objeto realmente const resulta em comportamento indefinido. Em vez disso, use mutable para exceções legítimas.

Classes com correção de const

Uma classe bem projetada marca como const todo método que não modifica o objeto, para que ela funcione perfeitamente em contextos const em todo o programa.

Verificação rápida

Teste a sua compreensão das funções membro const.

Recapitulação

Você aprendeu a marcar métodos somente leitura como const, que objetos const chamam apenas métodos const, como fazer sobrecarga com const e como mutable permite alterações em detalhes de implementação. Evite const_cast e projete as classes com correção de const desde o início.

Perguntas Frequentes

A aula “Funções-membro const” é grátis?

Sim — o texto completo de “Funções-membro const” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C++ Academy, atualize para CoddyKit PRO. O curso de C++ Academy inclui 4 aulas no total.

O que vou aprender em “Funções-membro const”?

Marque métodos somente para leitura Você pratica C++ Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar C++ Academy?

Nenhuma experiência prévia é necessária. C++ Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Funções-membro const”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de C++ Academy?

Sim. Cada aula de C++ Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Variáveis e parâmetros const
  2. Funções-membro const
  3. constexpr e tempo de compilação
  4. consteval e constinit
← Voltar para C++ Academy