ExpertiDict

C++ · Intermediário · Inglês · Técnico

mutable

ˈmjuː.tə.bəlpalavra-chave

Especificador que permite modificar um membro de dados mesmo dentro de uma função membro const ou de um objeto const. Também permite alterar capturas por valor dentro de uma lambda.

Onde usar

Usado em caches, contadores de acesso e mutex membros de classes cujos getters são const. Em review, sinaliza que o estado lógico do objeto não muda, só o físico.

Em código

struct Cache {
  mutable int hits = 0;
  int get(int k) const {
    ++hits;  // ok, mesmo sendo const
    return k * 2;
  }
};

Exemplos

Mark the mutex as mutable so the getter can stay const.

Marque o mutex como mutable para o getter continuar const.

The cache is mutable because it doesn't change the logical state.

O cache é mutable porque não muda o estado lógico.

Cuidado

Não é um jeito de burlar const em qualquer coisa; abusar dele quebra a promessa de que funções const podem ser chamadas de várias threads sem sincronização.

Antônimos

const

Origem

Do inglês mutable, mutável.

Veja também

Todos os termos de C++