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.