ExpertiDict

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

explicit

ɪkˈsplɪsɪtpalavra-chave

Palavra-chave que impede que um construtor de um argumento, ou um operador de conversão, seja usado em conversões implícitas. Obriga quem chama a pedir a conversão de forma visível.

Onde usar

Em code review, é pedido em construtores de um parâmetro para evitar conversões surpreendentes, como passar um inteiro onde se esperava um objeto Buffer.

Em código

struct Buffer {
  explicit Buffer(std::size_t n) {}
};
void usa(Buffer b) {}
// usa(10);  // erro
usa(Buffer(10));  // ok

Exemplos

Make this single-argument constructor explicit.

Torne esse construtor de um argumento explicit.

Without explicit, a plain int silently converts into a Buffer.

Sem explicit, um int comum vira um Buffer silenciosamente.

Cuidado

Esquecer explicit em construtores de um argumento permite conversões silenciosas, como Buffer b = 5.

Veja também

Todos os termos de C++