EMCPP条款22:使用Pimple习惯用法时,将特殊成员函数的定义放到实现文件中

YiQi 管理员

这种技巧就是把某类的数据成员用一个指涉到某实现类(或结构体)的指针替代,尔后把原来在主类中的数据成员放置到实现类中,并通过指针间接访问这些数据成员。

目前在使用的code中暂时还没发现Pimple用法中使用 std::unique_ptr 的必要性,如有遇到再参见原文

要点速记

  • Pimpl 惯用法通过降低类的客户和类实现者之间的依赖性,减少了构建遍数。
  • 对于采用 std::unique_ptr 来实现的 Pimpl 指针,须在类的头文件中声明特种成员函数,但在实现文件中实现它们。即使默认函数实现有着正确行为,也必须这样做。
  • 上述建议仅适用于 std::unique_ptr, 但并不适用 std::shared_ptr
此页目录
EMCPP条款22:使用Pimple习惯用法时,将特殊成员函数的定义放到实现文件中