c++中pimpl用法总结
来源:互联网 发布:ubuntu软件卸载命令 编辑:程序博客网 时间:2024/05/11 18:51
在编写稳定代码是,管理好代码间的依赖性是不可缺少的一个环节。特别是库文件的编写中,减少代码间的依赖性可以提供一个“干净”的接口。
下面是根据美国Herb Sutter写的Exceptional C++一文,并进行了一定的总结。
一、降低#include的依赖性,
1)永远不用用#include包含不必要的头文件;
2)如果需要流的前置声明,应该优先使用#include <iosfwd>;
3)只需要前置声明时,绝不需要用#include包含相应的头文件;
二、限制类的内部成员之间的依赖性,
1)对于那些广泛使用的类,应该优先使用pimpl惯用法来隐藏实现细节,通过一个不透明的指针(指向一个进行了前置声明,但没有定义的类)来保存私有成员。这个声明可以采用
“struct XImpl;//前置声明,放在类中,也可以放在类的外面
XImpl* pimpl_;"//定义一个指针变量
这样的形式。
三、可靠类设计原则,
1)如果使用聚合关系就已经足够,就不要使用继承
四、编译防火墙,
1) 应该将那些部分放入XImpl对象中?
方法一:将所有的私有数据成员(但不包括私有成员函数)放入到XImpl中。
方法二:将所有的私有成员函数放入到XImpl中。
注意:a、不能将虚函数放在pimpl中隐藏起来,即使虚函数是私有的;
b、pimpl中的函数可能需要一个指向可见对象的”回调指针“;
c、最好将只有私有成员才调用的非私有函数放入到XImpl中;
方法三:保护成员不得放入到XImpl中。
方法四:将XImpl写成与可见对象完全一样的形式,而将可见对象写成由简单的转调函数组成的公有接口。(只有在受限情况下才有用,对于继承没有多大用处)
2)如何才能以最安全的方式来使用它呢?
有时候需要,但会多一个中间层调用
- c++中pimpl用法总结
- pimpl 用法
- pImpl的高级用法
- C++中PIMPL技法
- pimpl
- pimpl
- PIMPL
- pimpl
- pimpl
- PIMPL
- c语言中static 用法总结
- c语言中static 用法总结
- c语言中static 用法总结
- c/c++中const用法总结
- c语言中static 用法总结
- c语言中static 用法总结
- c语言中static 用法总结
- c语言中static 用法总结
- Xcode 6 lauchImage 启动页面和storyboard在iPhone 5 IOS 7压缩
- Spring 3整合Quartz 2实现定时任务三:动态暂停 恢复 修改和删除任务
- 计算机网络
- OpenSSL中HMAC,MD5以及对称加密算法的应用
- 输入一个整数,判断其是否是2^n,.............................
- c++中pimpl用法总结
- Unity Mathf 数学运算(C#)
- HDU5063 Operation the Sequence(逆向思想)
- 下载网络文件HttpURLConnection.getContentLength()大小为 -1
- 使用adb命令安装apk
- python的安装(版本2.7.8)
- ORACLE EXECUTE IMMEDIATE 小结
- 单片机入门基础
- ArcGIS API for Flex(一) 新增地图和图层