为了账号安全,请及时绑定邮箱和手机立即绑定

PIMPL的成语真的在实践中使用吗?

PIMPL的成语真的在实践中使用吗?

C++
互换的青春 2019-07-19 15:32:19
PIMPL的成语真的在实践中使用吗?我正在读HerbSutter的“例外C+”一书,在那本书中我学到了PIMPL的成语。基本上,我们的想法是为private的对象class并动态分配给缩短编译时间(并以更好的方式隐藏私有实现)。例如:class X{private:   C c;   D d;  } ;可改为:class X{private:   struct XImpl;   XImpl* pImpl;       };在CPP中,定义:struct X::XImpl{   C c;   D d;};这似乎很有趣,但我以前从未见过这种方法,无论是在我工作过的公司,还是在我见过源代码的开源项目中。所以,我想知道这种技术是否真的在实践中得到了应用?我应该在任何地方使用它,还是要小心使用?这种技术推荐用于嵌入式系统(性能非常重要)吗?
查看完整描述

3 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

同意所有其他人关于这批货物的意见,但请允许我提出一个限制:模板不能很好地工作.

原因是模板实例化需要在实例化发生时可用的完整声明。(这就是你没有看到模板方法被定义到CPP文件的主要原因)

您仍然可以引用临时子类,但是由于必须将它们全部包括在内,所以在编译中“实现解耦”(避免在任何地方包含所有特定于平台的代码,缩短编译)的所有优点都会消失。

对于传统的OOP(基于继承的)是一个很好的范例,但对于一般编程(基于专门化)则不是一个很好的


查看完整回答
反对 回复 2019-07-19
  • 3 回答
  • 0 关注
  • 257 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信