科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件C++ PImpl耦合技巧实例

C++ PImpl耦合技巧实例

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

C++的PImpl技巧及作用, 类CSample仅向外界暴露了最小的接口,真正的实现由其内部类CImpl来完成。这样无论CImpl如何修改,外界对此一无所知,从而保持接口的不变性。这种方式的另外一个好处是减少了头文件之间的依赖关系。

来源:中国IT实验室 2013年3月6日

关键字: PImpl 耦合 C++

  • 评论
  • 分享微博
  • 分享邮件

ZDNet至顶网软件频道 PImpl(private implementation) 其主要作用是解开类的使用接口和实现的耦合,类CSample仅向外界暴露了最小的接口,真正的实现由其内部类CImpl来完成。这样无论CImpl如何修改,外界对此一无所知,从而保持接口的不变性。这种方式的另外一个好处是减少了头文件之间的依赖关系。

一个很简单的实现如下:

头文件中:

1 class CSample

2 {

3 private:

4 class CImpl;

5 shared_ptr<CImpl> mp;

6

7 public:

8 CSample();

9

10 void print();

11 };

实现文件中:

1 class CSample::CImpl

2 {

3 public:

4 void doPrint()

5 {

6 cout << "impl print" << endl;

7 }

8 };

9

10 CSample::CSample() : mp(new CImpl)

11 {}

12

13 void CSample::print() { mp->doPrint(); }

类CSample仅向外界暴露了最小的接口,真正的实现由其内部类CImpl来完成。这样无论CImpl如何修改,外界对此一无所知,从而保持接口的不变性。这种方式的另外一个好处是减少了头文件之间的依赖关系。

上面的代码里,我使用了boost的shared_ptr来管理指针,简化代码。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章