Document d'information:
Le PIMPL Idiome est une technique de mise en œuvre de la clandestinité dans laquelle un public de classe encapsule une structure ou d'une classe qui ne peut pas être vu à l'extérieur de la bibliothèque de la classe publique est partie.
Ce cache interne détails de mise en œuvre et les données de l'utilisateur de la bibliothèque.
Lors de la mise en œuvre de la cet idiome pourquoi vous placez les méthodes publiques sur la pimpl classe, et non pas la classe publique depuis le public des classes de méthode implementaions seraient rassemblés dans la bibliothèque et l'utilisateur n'a plus le fichier d'en-tête?
Pour illustrer, ce code met l'Purr() de la mise en œuvre sur l'impl classe et l'enveloppe.
Pourquoi ne pas mettre en œuvre Ronronner directement sur la classe publique?
//header file:
class Cat {
private:
class CatImpl; // Not defined here
CatImpl *cat_; // Handle
public:
Cat(); // Constructor
~Cat(); // Destructor
// Other operations...
Purr();
};
//CPP file:
#include "cat.h"
class Cat::CatImpl {
Purr();
... // The actual implementation can be anything
};
Cat::Cat() {
cat_ = new CatImpl;
}
Cat::~Cat() {
delete cat_;
}
Cat::Purr(){ cat_->Purr(); }
CatImpl::Purr(){
printf("purrrrrr");
}