c++
文章平均质量分 80
s_51563946
这个作者很懒,什么都没留下…
展开
-
手工实现RTTI
运行时的动态类型检查(RTTI,Run Time Type Indentifiation)是c++中提供的一项语言机制,它主要用于判断多态对象的具体类型。 为什么不使用c++提供的RTTI功能 但c++中直接提供的RTTI存在一些缺点。首先它提供了取得类名(typeinfo中的name函数)的功能,这个功能实际上并不是RTTI必须的。很多时候我们不需要取得类的名字,而只是希原创 2009-08-20 10:47:00 · 1101 阅读 · 0 评论 -
抽象工厂模式实现的dll插件功能.
先谈下设计需求.一个可扩展的程序很多地方都希望是可以替换或者是可以扩展的.比如一个游戏引擎,希望渲染部分能够在D3D和OpenGL之间替换,希望shader部分能够在cg,hlsl,glsl之间切换,希望音频部分能够在DS3D和OpenAL之间切换,希望可以选择性的获得读取普通文件和读取zip或者其他输入流的能力,希望能够读取各种不同的模型文件格式的能力--而且这些都不必改变上层接口.原创 2009-08-18 12:07:00 · 2780 阅读 · 0 评论 -
如何在编译期进行拓扑排序,自动处理模块初始化依赖顺序。
模块之间的初始化和清理的顺序是很重要的。这个顺序应该可以根据各个模块之间的依赖关系求出。而且在绝大部分情况下,链接进工程的各个模块之间的依赖关系在编译期就可以确定出来。下面我们来讨论一下如何通过模板元编程构造一套方便的机制,让编译器自动帮你完成初始化和清理的排序工作。 为了方便大家理解这部分工作到底能够用于处理什么情况,这里先将实现后的用法说明一下: 假设我们有6个模块,分别原创 2009-08-22 17:08:00 · 1080 阅读 · 0 评论 -
组装你的类(一):编译期的装饰模式.
设计模式中讲到的装饰模式可以用来为某些函数动态的配置行为.追究其本质实际上是利用了一个链表结构保存了一组相同签名的函数指针(或者虚基类指针),然后统一调用它们.调整这个链表结构中函数指针的数目和顺序就可以动态的改变该函数的行为. 但运行期的装饰模式只能为一个类的成员函数添加行为,但不能增加一个新的函数.那么我们如何实现灵活的配置一个类,为类添加函数呢? 这样的功能只有在编译期才原创 2009-08-23 12:56:00 · 688 阅读 · 0 评论 -
关于单元测试的一些思考
1. 单元测试,持续集成在敏捷开发中的位置:敏捷开发(XP,Scrum)中提到了很多项目管理的实践。其中最基本的四个技术实践是其他实践活动的基础:版本控制,单元测试,持续集成与重构;单元测试是持续集成与重构的基础。持续集成通过自动化的单元测试来验证每次提交代码的正确性,重构也是通过单元测试来保证重构后的代码能够完成重构前同等的功能;持续集成的流程大致如下:1) 每过指定时间(5分钟)从版本控制系统上拉去最新的工程;2) 如果更新到新的内容,通过自动化编译脚本编译代码;3原创 2010-10-28 20:09:00 · 1414 阅读 · 1 评论