您当前的位置: 首页 >  c++

令狐掌门

暂无认证

  • 3浏览

    0关注

    513博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C++ PImpl实现机制浅析与代码实现

令狐掌门 发布时间:2021-09-18 21:08:59 ,浏览量:3

  在《超越c++标准库-boost程序库导论》中有这么一段话中有这么一段话:

scoped_ptr 和 Pimpl 用法

  scoped_ptr 可以很好地用于许多以前使用裸指针或 auto_ptr 的地方,如在实现 pimpl 用法时。 [4]pimpl 用法背后的思想是把客户与所有关于类的私有部分的知识隔离开。由于客户是依赖于类 的头文件的,头文件中的任何变化都会影响客户,即使仅是对私有节或保护节 的修改。pimpl 用 法隐藏了这些细节,方法是将私有数据和函数放入一个单独的类中,并保存在一个实现文件中, 然后在头文件中对这个类进行前向声明并保存 一个指向该实现类的指针。类的构造函数分配这个 pimpl 类,而析构函数则释放它。这样可以消除头文件与实现细节的相关性。我们来构造一个实 现 pimpl 用法的类,然后用智能指针让它更安全些。

  PImpl 这也被称为 Cheshire Cat 用法. 关于 pimpl 用法更多的说明请见 www.gotw.ca/gotw/024.htm 和 Exceptional C++ 。

  PIMPL ,即Private Implementation,一般称之为类的私有化实现,PImpl主要有两个作用;

  • (1)它让声明和实现进行解耦,在项目开发时,如果很多文件引用了该头文件,如果头文件改变了一些实现,那么在编译时,所有引用的文件也得重新编译一次,增加了c++程序的编译时间, 如果把实现用一个指针进行声明,改变实现的代

关注
打赏
1652240117
查看更多评论
立即登录/注册

微信扫码登录

0.0396s