前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >推荐一种有用的C++设计模式——PImpl

推荐一种有用的C++设计模式——PImpl

作者头像
CPP开发前沿
发布2024-04-19 19:04:22
1490
发布2024-04-19 19:04:22
举报
文章被收录于专栏:CPP开发前沿CPP开发前沿

PImpl的全程是:“Pointer to Implementation”,主要用于隐藏一个类的实现细节。在C++中通过将类的实现细节移到一个单独的类,主类通过包含该类的指针实现功能的调用,从而完成隐藏类实现的功能。

实现方式如下:

代码语言:javascript
复制
class VideoControl{
public:
    virtual void doSomething() = 0;
    virtual ~VideoControl() = default;
};

class VideoControlImpl : public VideoControl {
public:
    void doSomething();
};

class Widget {
public:
    Widget();
    ~Widget();
    void doSomething();
private:
    VideoControl* pImpl;
};

如上,上面的代码我们要实现的功能是对外提供一个doSomething()的方法,但是又想对外隐藏实现的细节。因此在实现过程中,定义了一个抽象类VideoControl,然后创建了一个实现类VideoControlImpl 实现具体的功能,从而达到对外隐藏实现的细节。

Impl模式常被应用于SDK的开发中,日常以SDK的方式给第三方进行使用,在大型项目中使用除了上述的优点外还具备以下特点:

  • 减少编译依赖:实现类的头文件发生改变时,只有实现类需要重新编译,主类可以保持不变,从而减少了编译时间。
  • 降低编译时间:由于只有实现类需要重新编译,因此在大型项目中使用PImpl模式可以显著减少整体的编译时间
本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-17,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 CPP开发前沿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com