我目前的项目包括编写一个PIMPL API,我已经决定使用PIMPL成语。
我应该在我的项目中的任何地方使用PIMPL成语吗?例如,我需要创建一个继承自std::exception的自定义类,是应该考虑使用PIMPL成语来设计这个类,还是可以将其作为一个公共实现来编写?
假设我使用的是我创建的每个类都应该围绕它设计的PIMPL成语,这是错误的。在使用而不是的情况下,是否有例外情况?
发布于 2014-12-15 11:23:19
如果您正在编写API /库,那么问题是API用户的主要优势是什么,甚至是他们将使用什么样的IDE和工具来使用您的API。使用PIMPL的要点是:
您不应该使用PIMPL时,当虚拟调用或任何类型的间接花费您的用户在他们的程序的操作时间太多:
发布于 2014-12-15 10:52:38
PIMPL有成本。
因此,真正需要它的地方只是一个好主意,例如包含使用使用C++关键字作为名称的C头,或者定义无数个宏。
有些人(包括Herb)主张或者至少不反对仅仅为了缩短构建时间而使用PIMPL,但其他措施,比如将硬件扔到问题上,代价可能会更低。
https://stackoverflow.com/questions/27482339
复制相似问题