相关疑难解决方法(0)

pImpl成语是否真的在实践中使用?

我正在阅读Herb Sutter的"Exceptional C++"一书,在那本书中我学到了关于pImpl的习语.基本上,我们的想法是为a的private对象创建一个结构class并动态分配它们以减少编译时间(并且还以更好的方式隐藏私有实现).

例如:

class X
{
private:
  C c;
  D d;  
} ;
Run Code Online (Sandbox Code Playgroud)

可以改为:

class X
{
private:
  struct XImpl;
  XImpl* pImpl;       
};
Run Code Online (Sandbox Code Playgroud)

并且,在CPP中,定义:

struct X::XImpl
{
  C c;
  D d;
};
Run Code Online (Sandbox Code Playgroud)

这看起来很有趣,但我以前从未见过这种方法,既没有在我工作的公司,也没有在我看过源代码的开源项目中.所以,我想知道这种技术真的在实践中使用了吗?

我应该在任何地方使用它,还是谨慎使用?这种技术是否建议用于嵌入式系统(性能非常重要)?

c++ oop pimpl-idiom

157
推荐指数
7
解决办法
3万
查看次数

标签 统计

c++ ×1

oop ×1

pimpl-idiom ×1