泛型编程
文章平均质量分 79
ShenRui
不要只会编码,交流比编码更重要
展开
-
boost源码剖析之:多重回调机制signal(下)
概述在本文的上篇中,我们已经分析了signal的总体架构。至于本篇,我们则主要集中于将函数对象(即仿函数)连接到signal的来龙去脉。signal库的作者在这个方面下了很多功夫,甚至可以说,并不比构建整个signal架构的功夫下得少。 之所以为架构,其中必然隐藏着一些或重要或精妙的思想。学过STL的人都知道,函数对象[1](functionobject)是STL中的重要概念和转载 2009-05-15 09:45:00 · 719 阅读 · 0 评论 -
boost源码剖析之:多重回调机制signal(上)
boost库固然是技术的宝库,却更是思想的宝库。大多数程序员都知道如何应用command,observer等模式,却不知该如何写一个支持该模式的类。正如隔靴搔痒,无法深入。DDJ上曾有一篇文章用C++实现类似C#的event机制,不过是个雏形,比之boost.Signal却又差之甚远矣。上篇:架构篇引入所谓“事件”机制,简而言之,就是用户将自己的一个或多个回调函数挂钩到某个“事件”上,一旦“转载 2009-05-15 09:42:00 · 929 阅读 · 1 评论 -
C++ 虚函数表解析
陈皓http://blog.csdn.net/haoel 前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我转载 2010-07-07 09:14:00 · 436 阅读 · 0 评论 -
c语言用宏实现模板-以队列为例
1. 队列类型及操作的宏定义://队列类型表示:Queue_元素类型(如元素为整形的队列类型为:Queue_int)//_ET:元素类型#define Q_TYPE(_ET) Queue_##_ET//队列变量定义:每个队列对应一个数组,用于存放元素,数组名表示成:qBuf##queue//在定义队列变量时需指定队列长度:由len指定//ET: 元素类型//queue: 队列变量名//len: 队列长度#define Q_DEFINE(ET,queue,len) ET qBuf##queue[len]; i转载 2011-05-10 12:46:00 · 5532 阅读 · 0 评论 -
C语言中实现模板函数小结
<br /><br /> 如果要写个函数支持多种数据类型,首先想到的就是C++的模板了,但是有时候只能用C语言,比如在linux内核开发中,为了减少代码量,或者是某面试官的要求…<br /> 考虑了一阵子后,就想到了qsort上.qsort的函数原型:<br />void qsort( void *base, size_t num, size_t width, int (__cdecl *compare )(const void *elem1, const void *elem2 ) );<转载 2011-05-10 12:48:00 · 16137 阅读 · 1 评论 -
C语言实现stack模板
看了bsd的源码,才知道C语言能通过宏实现C++模板的功能,真是太强大了! 我也学习着写了一个stack模板。有什么好的建议欢迎留言啊~~ "stack.h" #ifndef MICRO_STACK_H #define MICRO_STACK_H #include #include #define STACK_NODE(name) name##__node #define STACK_TEMPLATE(name,type) / struct STACK_NODE(nam转载 2011-05-10 12:44:00 · 5516 阅读 · 1 评论