!
也想出现在这里? 联系我们
广告位
当前位置:首页>运营>网站运维>C++ pimpl机制详细讲解

C++ pimpl机制详细讲解

Pointer to implementation(PImpl ),通过将类的实现细节放在一个单独的类中,从其对象表示中删除它们,通过一个不透明的指针访问它们(cppreference 是这么说的)

C++ pimpl机制详细讲解

通过一个私有的成员指针,将指针所指向的类的内部实现数据进行隐藏

为什么用PImpl 机制

个人拙见

C++ 不像Java 后端型代码,能有行业定式的列目录名形成规范(controller、Dao等)隐藏实现,降低耦合性和分离接口(隐藏类的具体实现)通过编译期的封装(隐藏实现类的细节)

业界实现

优秀开源代码有实现

PImpl实现

方法一

cook_cuisine.h

cook_cuisine.cc

方法二

cook_cuisine.h

cook_cuisine.cc

cook_cuisine_imp.h

cook_cusine_imp.cc

main.cc

CMakeLists.txt

mkdir buildcd buildcmake ..

PImpl 缺点

空间开销:每个类都需要额外的指针内存指向实现类

时间开销:每个类间接访问实现的时候多一个间接指针操作的开销

阅读开销:使用、阅读和调试上带来一些不便(不是啥问题)

总结

每种设计方法都有它的优点和缺点

PImpl 用一些内存空间和额外类的实现换取耦合性的下降,是可以接受的

但重点在:在性能/内存要求不敏感处,PImpl 技术才更优不错的发挥舞台

极端例子:

你不可能在斐波那契的实现中还加个PImpl 机制,多此一举

给TA打赏
共{{data.count}}人
人已打赏
网站运维

Go语言设计模式之实现观察者模式解决代码臃肿(go语言开发可视化界面)

2022-9-3 14:31:10

网站运维

JavaScript设计模式之职责链模式详解(职责链模式类图)

2022-9-3 14:31:31

声明 本站上的部份代码及教程来源于互联网,仅供网友学习交流,若您喜欢本文可附上原文链接随意转载。无意侵害您的权益,请发送邮件至 [email protected] 或点击右侧 私信:林沐阳 反馈,我们将尽快处理。
{{yiyan[0].hitokoto}}
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索