Partager via


Pimpl pour l'encapsulation au moment de la compilation (Modern C++)

L'idiome pimpl est une technique moderne de C++ pour masquer l'implémentation, réduire le couplage, et pour séparer les interfaces. Pimpl est l'abréviation de « pointeur vers implémentation. » Vous connaissez peut-être déjà le concept mais le connaissez sous d'autres noms tels que Cheshire Cat ou idiome de pare-feu du compilateur.

Pourquoi utiliser pimpl ?

Voici comment l'idiome pimpl peut améliorer le cycle de vie de développement logiciel :

  • Minimisation des dépendances de compilation.

  • Séparation d'interface et d'implémentation.

  • Portabilité

En-tête 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
};

L'idiome pimpl évite des cascades de reconstruction et les mises en page fragiles de l'objet. Il convient bien pour les types (transitivement) très utilisés.

Implémentation de pimple

Définissez la classe impl dans le fichier.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 ... 
}

Méthodes conseillées

Demandez-vous s'il faut ajouter la prise en charge de la spécialisation non-throwing swap.

Voir aussi

Autres ressources

Bienvenue dans C++ (Modern C++)

Référence du langage C++

Référence de bibliothèque standard C++