王的男人
分类: C/C++
2013-09-10 09:58:11
不需要C++,C语言照样可以面向对象编程,照样可以模版编程。下面是我写cfan库的一些经验。
使用void*会迫使内存在堆上分配,模版编程能在不损失性能的情况下复用代码。
例如一个Point对象,需要有doble类型和int类型两方。使用模版实现如下:
#deinf Point_template(Name, T) struct Point##Name { T x; T y; }
Point_template(D, double)
Point_template(I, int)
这样我们就能同时得到两个Point类, PointD和PointI。类似方法函数也可以用模版来实现。
cfan中大部分容器是使用这种方法实现的。
通过函数命名约定来实现面向对象,例如:
cf_Executor_addTask(self)是Executor类的addTask方法,'this'指针约定名称为self。