Pimpl 是“Pointer to IMPLementation”的缩写,意为“指向实现的指针”。它是 C++ 中一种将类的实现细节从对象表示中移除、放到一个分离的类中、并通过不透明指针进行访问的编程技巧。其核心思想是:将类的具体实现封装到一个独立的结构体或类中,原类只保留一个指向该实现的指针。
适用场景
1)大型 C++ 项目:尤其是头文件依赖复杂、编译速度慢的项目,Pimpl 能显著提升编译效率。
2)SDK/动态库开发:需要保证二进制兼容性,迭代库文件时不影响使用者,Pimpl 是核心技巧。
3)需要隐藏实现细节的场景:比如开发商业软件、核心算法模块,避免实现逻辑泄露。
4)类的实现频繁变动的场景:如果一个类的私有成员、实现逻辑经常修改,使用 Pimpl 可以避免频繁重新编译依赖它的代码。