EMCPP条款22:使用Pimple习惯用法时,将特殊成员函数的定义放到实现文件中
这种技巧就是把某类的数据成员用一个指涉到某实现类(或结构体)的指针替代,尔后把原来在主类中的数据成员放置到实现类中,并通过指针间接访问这些数据成员。
目前在使用的code中暂时还没发现Pimple用法中使用
std::unique_ptr
的必要性,如有遇到再参见原文
要点速记
- Pimpl 惯用法通过降低类的客户和类实现者之间的依赖性,减少了构建遍数。
- 对于采用
std::unique_ptr
来实现的 Pimpl 指针,须在类的头文件中声明特种成员函数,但在实现文件中实现它们。即使默认函数实现有着正确行为,也必须这样做。 - 上述建议仅适用于
std::unique_ptr
, 但并不适用std::shared_ptr
。