xuejm 回复于:2003-10-13 09:39:13 |
不错,不错!!! |
flw 回复于:2003-10-13 09:45:52 |
顺便说一句,如果将 apq* 这些函数申明成 static 的,则效果会更好。 |
flyingbear 回复于:2003-10-13 09:50:40 |
我以前试过的。可惜这样实现不了类成员的访问控制,不过这个倒不是很重要。 |
Qiya 回复于:2003-10-13 14:37:32 |
[quote:48clearcase/" target="_blank" >cc4ec090="flw"]顺便说一句,如果将 apq* 这些函数申明成 static 的,则效果会更好。[/quote:48cc4ec090]
能具体说一下吗? |
flw 回复于:2003-10-13 14:46:38 |
[quote:ddc7ab00ae="Qiya"]
能具体说一下吗?[/quote:ddc7ab00ae] [code:1:ddc7ab00ae]void InitAppQueue(struct AppQueue *papq) { papq->pHead = papq->pTail = NULL; papq->InQueue = apq_InQueue; papq->OutQueue = apq_OutQueue; papq->Empty = apq_Empty; papq->ClearQueue = apq_ClearQueue; } [/code:1:ddc7ab00ae] 改成 [code:1:ddc7ab00ae] static void InitAppQueue(struct AppQueue *papq) { papq->pHead = papq->pTail = NULL; papq->InQueue = apq_InQueue; papq->OutQueue = apq_OutQueue; papq->Empty = apq_Empty; papq->ClearQueue = apq_ClearQueue; } [/code:1:ddc7ab00ae] 诸如此类 |
Qiya 回复于:2003-10-13 15:03:15 |
[quote:ba360a27ae="flw"]诸如此类[/quote:ba360a27ae]
是了!谢谢!只要将成员函数加上 static 可以限制其作用域,使其只能在本文件内可见! |
bigluo 回复于:2003-10-13 15:18:48 |
好像也没有这个必要,如果对形式要求的那么严格,就用c++呀。berkly DB 1.x的api就是这个样子的,搞得很别扭。 |
star55 回复于:2003-10-13 15:22:58 |
C++编程思想里面介绍得挺详细的,觉得如果真的想用C实现CLASS的一部分功能,应该去看那本书 |
Qiya 回复于:2003-10-13 15:52:24 |
[quote:8e542e89cd="star55"]C++编程思想里面介绍得挺详细的,觉得如果真的想用C实现CLASS的一部分功能,应该去看那本书[/quote:8e542e89cd]
我就是从<<C++编程思想>>中借鉴过来的!特别是讲 this 指针的那部分 |
Qiya 回复于:2003-10-13 15:56:56 |
[quote:3636242092="bigluo"]好像也没有这个必要,如果对形式要求的那么严格,就用c++呀。berkly DB 1.x的api就是这个样子的,搞得很别扭。[/quote:3636242092]
我们已有的程序是用 c 写的,现在不想一下子全用c++ 重写!其实这样做还是有一些好处的! |
flw 回复于:2003-10-13 19:55:16 |
[quote:4533ef74e6="Qiya"]我们已有的程序是用 c 写的,现在不想一下子全用c++ 重写!其实这样做还是有一些好处的![/quote:4533ef74e6]
顺便说一句,其实在 C++ 中还是可以使用以前的 C 程序的。 |
grip2 回复于:2003-10-14 13:33:16 |
实现的太简单了,够不成一个“类”的概念。
实际GCC本身就包含一种思想,就是在C的基础上引进面向对象的思想,这不是通过一个简单的类来实现的。 无论从kernel还是一些著名的应用程序代码都可以看见以GCC来构建的面向对象的思想。 当然,也不反对用C来实现类,但是这不是很简单,尤其你如果想把已经有的C++代码搬到C上,那这是很艰难的,要考虑太多的内容。如果真想去如此做的话,那看THIS部分是不够的,建议看看COM的实现,可以从另一个角度充分了解C++ 运行期环境。 在C++中可以用C,但是就象C++之父说的:“C++和C是两种语言”。所以不要被他们在语法上的类似就混淆使用,那样有可能会导致一些不可预料的事情发生。 |
流浪的狗 回复于:2003-10-14 15:33:56 |
楼主:
你这个方法看上去更向代码复用,类的概念包括代码复用,但更重要的是描述对象的数据结构也要复用。也就是对象对于调用他的代码来说是个黑匣子。不知我理解的对吗? |