Compartilhar via


Pimpl para encapsulamento do tempo de compilação (C++ moderno)

O idioma de pimpl é uma técnica moderna C++ ocultar a implementação, minimizar o envolvimento, e separar interfaces. Pimpl é curta para o “ponteiro para a implementação.” Você pode já esteja familiarizado com o conceito mas conhecê-lo por outros nomes como o idioma de firewall de categorias ou do compilador de Cheshire.

Por que usar o pimpl?

Veja como o idioma de pimpl pode melhorar o ciclo de vida de desenvolvimento de software:

  • Minimização de dependências da compilação.

  • Divisão da interface e de implementação.

  • Mobilidade.

Cabeçalho de Pimpl

// my_class.h
class my_class {
   //  ... all public and protected stuff goes here ...
private:
   class impl; unique_ptr<impl> pimpl; // opaque type here
};

O idioma de pimpl impede cascatas de recriação e layouts é frágil do objeto. É o mais adequado para () transitiva tipos comuns.

Implementação de Pimpl

Define a classe de impl no arquivo .cpp.

// my_class.cpp
class my_class::impl {  // defined privately here
  // ... all private data and functions: all of these
  //     can now change without recompiling callers ...
};
my_class::my_class(): pimpl( new impl )
{
  // ... set impl values ... 
}

Práticas recomendadas

Considere se adicionar suporte para a especialização de emissão de troca.

Consulte também

Outros recursos

Bem-vindo ao C++ (C++ moderno)

Referência de linguagem C++

Referência da Biblioteca Padrão C++