"COM as a better C++"读后小结
来源:互联网 发布:可视化软件开发工具 编辑:程序博客网 时间:2024/05/24 07:16
为什么要做这么多:
dynamic composable system
compiler-independent
1:类的声明和实现的分离
在h中定义接口,在CPP中定义实现
2:仅向用户暴露接口
在h中定义基类,仅包含纯虚函数声明,同时提供virtual destroy()方法而不把析构函数声明为虚;
同时声明创建子类的方法,并返回基类指针;
3:运行时多态
由于接口和实现的完全分离,同样一套接口可以有不同的实现,可以在调用的时候根据参数判断导入哪一个DLL
4:类的扩展
方法一通过对原有接口的继承,为防止新接口对旧实现的调用而出错,使用RTTI来判断具体实现对象的类型(i.e. dynamic_cast< derived * >( base * ) )
由于dynamic_cast<>是一个编译器依赖的方法,大家对它的实现可能不完全相同,而我们使用虚基类作为接口就是为了编译器无关这个目的,那么使用它将会破坏这个封装。那么需要自己实现RTTI,每个类都必须手动写RTTI的实现,
5: 公有虚接口
既然大家都要用到诸如dynamic_cast和delete等虚接口,那么把它们抽出来做为一个最基本的基类
6:引用计数功能的加入
由于使用了多继承,在创建和删除对象的时候可能会使的客户代码变得复杂,所以加入一个引用计数,每个指针的delete会使计数器减1,当计数为0的时候对象将被自动析构,同样的,指针在被复制的时候需要对引用计数器加1
- "COM as a better C++"读后小结
- 学习com后技术小结
- Why ConcurrentHashMap is better than Hashtable and just as good as a HashMap
- UGG Handbags As Better
- bnu1208 As easy as a+b problem C语言版
- hdu1040 As Easy As A+B(C语言)
- Using VB.NET 2008 DLL as a COM DLL
- A Better Tomorrow
- A better iterable class
- A better life
- as a
- C - More is better
- Need a better blog service
- To be a better man
- to be a better man
- To be a better man
- For A Better Android Experience
- To Be A Better Learner
- Java基础知识
- Adapter模式的理解
- Linux apache+php+mysql installation summary
- 软件开发项目进度控制浅谈
- 我的第一个shell程序
- "COM as a better C++"读后小结
- 《Java面向对象程序设计——图形化方法》译序
- SendMessage的返回值
- 同朋友在线交流帖,功能等同于QQ
- 中国神仙一览表
- 黑盒测试测试方法的选择经验之谈
- 回家 —— 遭遇水灾
- javascript常用到的一些方法
- Test