我正在阅读Herb Sutter撰写的“ Exceptional C ++”一书,在那本书中,我了解了pImpl习惯用法。基本上,该想法是为a的private
对象创建一个结构class
并动态分配它们以减少编译时间(并以更好的方式隐藏私有实现)。
例如:
class X
{
private:
C c;
D d;
} ;
可以更改为:
class X
{
private:
struct XImpl;
XImpl* pImpl;
};
以及在CPP中的定义:
struct X::XImpl
{
C c;
D d;
};
这似乎很有趣,但是我以前从未见过这种方法,无论是在我工作的公司还是在看过源代码的开源项目中,我都从未见过。因此,我想知道这种技术是否真的在实践中使用?
我应该在任何地方使用它还是要谨慎使用?是否建议将此技术用于性能非常重要的嵌入式系统?
const unique_ptr<XImpl>
而不是实现XImpl*
。
struct XImpl : public X
。对我来说,这很自然。还有其他我想念的问题吗?