Pimpl para o encapsulamento de tempo de compilação (C++ moderno)
A linguagem de pimpl é uma técnica moderna C++ ocultar a implementação, minimizar o encaixe, e separar interfaces.Pimpl é curto para “ponteiro para a implementação.” Você pode já estar familiarizado com o conceito mas saber por outros nomes como o idioma do firewall de gato ou do compilador de Cheshire.
Por que usar o pimpl?
Aqui é como o idioma de pimpl pode melhorar o ciclo de vida de programação de software:
Minimização de dependências de compilação.
Separação de interface e de implementação.
Portabilidade.
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
};
A linguagem de pimpl evita cascatas da recompilação e layouts frágeis do objeto.É bem adequado para tipos populares transitiva ().
Implementação de Pimpl
Defina a classe de impl no arquivo de .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 lançamento de troca.