Condividi tramite


Pimpl per incapsulamento in fase di compilazione (C++ moderno)

Il linguaggio di pimpl è una tecnica moderna C++ per nascondere l'implementazione, per ridurre il motore e per separare le interfacce. Pimpl è breve "per il puntatore all'implementazione." È già avere familiarità con il concetto ma conoscerlo da altri nomi quali Gatto di Cheshire o il linguaggio del firewall del compilatore.

Poiché pimpl di utilizzo?

Di seguito viene illustrato come il linguaggio di pimpl può migliorare il ciclo di vita dello sviluppo del software:

  • Minimizzazione delle dipendenze di compilazione.

  • Separazione di interfaccia e di implementazione.

  • Portabilità.

Intestazione di Pimpl

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

Il linguaggio di pimpl ignora le sovrapposizioni di ricompilazione e layout fragili dell'oggetto. È ideale per (transitivo) tipi comuni.

Implementazione di Pimpl

Definire la classe di impl nel file 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 ... 
}

Procedure consigliate

Considerare se aggiungere il supporto per la specializzazione non generatori di scambio.

Vedere anche

Altre risorse

C++ (C++ moderno)

Riferimenti del linguaggio C++

Riferimento per la libreria standard C++