• Pimpl, Pointer to Implementation 将类数据成员声明为指针,指向某具体实现类或抽象类。
**• 编译依赖:**消除.h头文件对实现类的依赖(只需声明、而无需定义的不完整类型)。因为指针指向不完整类型是合法的。虽然.cpp实现文件内仍然需要实现类的定义(延迟依赖)。
**• 延迟分发:**如果使用指针指向抽象类,则由于虚函数的多态分发,将函数调用延迟到运行时,将具有更好的弹性。
**• 资源管理:**在构造器中初始化实现类(new),在析构器中释放实现类(delete)。裸指针可考虑替换为智能指针(unique_ptr),需要特别谨慎处理其中的编译依赖关系。