pimpl idiom flyfish 2014-9-30 pimpl是 Pointer to implementation的缩写 为什么要使用pimpl 1最小化编译依赖 2接口与实现分离 3可移植 pimpl idiom也被称作Cheshire Cat , Compiler Firewall idiom.,d-pointer 这个技术在设计模式中作为桥接模式(Bridge pattern.)来描写叙述 看MSDN的演示样例 Pimpl header
// my_class.hclass my_class { // ... all public and protected stuff goes here ...private: class impl; unique_ptrPimpl implementationpimpl; // opaque type here};
// my_class.cppclass 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 ... }实现部分被隐藏在class my_class::impl{......} 中 简单描写叙述就是将一个类切割为两个类,一个提供接口。一个负责实现。
既能最小化编译依赖,又能接口与实现分离。