Léxico de TI › Programação › PIMPL

PIMPL

Programação Svenska → Atualizado: 2026-09-30

Colocar todos os membros privados atrás de um ponteiro para um tipo apenas declarado no header e definido no arquivo-fonte. Também conhecido como firewall de compilação.

Dois problemas desaparecem. O primeiro é o tempo de build: normalmente todo arquivo que inclui uma classe precisa ser recompilado quando um membro privado muda, mesmo sem poder tocar nele — e o header ainda precisa puxar os headers de todos os tipos dos membros. O segundo é a estabilidade de ABI, motivo pelo qual autores de bibliotecas usam o padrão: o tamanho do objeto não muda quando seu conteúdo privado muda, então um programa já compilado continua funcionando com uma nova versão da biblioteca. Os custos são uma alocação no heap por objeto e um nível de indireção em cada acesso. A armadilha em que todo mundo cai ao menos uma vez: o destrutor deve ser declarado no header e definido no arquivo-fonte, senão o deleter do unique_ptr é instanciado sobre um tipo incompleto.

← Voltar ao léxico