| 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:48cc4ec090="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
|
楼主:
你这个方法看上去更向代码复用,类的概念包括代码复用,但更重要的是描述对象的数据结构也要复用。也就是对象对于调用他的代码来说是个黑匣子。不知我理解的对吗?
|