C++ PIMPL模式
来源:互联网 发布:丹麦经济数据 编辑:程序博客网 时间:2024/05/23 15:45
//x.hclass X{public: void Fun();private: int i; //add int i;};//c.h#include <x.h>class C{public: void Fun();private: X x; //与X的强耦合};PIMPL做法://c.hclass X; //代替#include <x.h>class C{public: void Fun();private: X *pImpl; //pimpl};
1)降低模块的耦合。因为隐藏了类的实现,被隐藏的类相当于原类不可见,对隐藏的类进行修改,不需要重新编译原类。
2)降低编译依赖,提高编译速度。指针的大小为(32位)或8(64位),X发生变化,指针大小却不会改变,文件c.h也不需要重编译。
3)接口与实现分离,提高接口的稳定性。
1、通过指针封装,当定义“new C”或"C c1"时 ,编译器生成的代码中不会掺杂X的任何信息。
2、当使用C时,使用的是C的接口(C接口里面操作的类其实是pImpl成员指向的X对象),与X无关,X被通过指针封装彻底的与实现分离。
//c.cppC::C()pImpl(new X()){}C::~C(){ delete pImpl; pImpl = NULL;}void C::Fun(){ pImpl->Fun();}//main#include <c.h>int main(){ C c1; c1.Fun(); return 0;}
0 0
- PIMPL模式
- PIMPL模式
- The C++ Pimpl(Pimpl模式)
- C++ PIMPL模式
- 设计模式之PIMPL
- C++的PIMPL模式解析
- pimpl
- pimpl
- PIMPL
- pimpl
- pimpl
- PIMPL
- 设计模式之pimpl惯用法C语言版(城门失火 殃及池鱼)
- PIMPL 模式的实现及应用。
- PIMPL 模式的实现及应用
- C++实现设计模式: PIMPL IDIOM
- PIMPL设计模式的理解和使用
- Bridge模式/ Pimpl惯用法 实例
- 大型网站架构系列:负载均衡详解(3)
- ServletConfig和ServletContext
- 微信APP支付返回-1错误
- Oracle自定义函数(不断更新)
- 在mac上开启httpServer服务
- C++ PIMPL模式
- HTML列表框元素的操作
- iOS 万能跳转界面方法 (runtime实用篇一)
- Protobuf-net 在Unity3D中使用的小技巧 (解决JIT错误)
- The Swift Programming Language学习笔记(十九)——错误处理
- Maven项目在eclipse中使用junit进行单元测试时报错:ClassNotFoundException
- php 去掉Url里的 index.php
- 苹果Xcode帮助文档阅读指南
- Matrix