Condividi tramite


Pimpl per l'incapsulamento della fase di compilazione (C++ moderno)

Il linguaggio di pimpl è una tecnica moderna C++ per nascondere l'implementazione, per ridurre l'accoppiamento e per separare le interfacce.Pimpl è breve "per il puntatore all'implementazione." È già avere familiarità con il concetto ma sapere da altri nomi come 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 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 i tipi più comuni.

Implementazione di Pimpl

Definire una 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

Digitare di nuovo a C++ (C++ moderno)

Riferimenti al linguaggio C++

Riferimento della libreria C++ standard