C语言实现面向对象思想

1. 使用结构体实现对象
这里写图片描述
与 C++不同的是, C 语言定义的成员函数增加了一个额外参数: lpThis,这是最关键的一点。实际上, C++语言在调用成员函数的时候,也隐含了一个指向自身的参数( this指针),因为 C 语言不支持这种隐含机制,因此需要明确的指定指向自身的参数。
调用:
CommonObject.GetObjectType(&CommonObject);

2. 利用宏定义实现继承
这里写图片描述
继承:
这里写图片描述
3. 使用强制转换实现动态类型
这里写图片描述
4. 资源的释放
1.每个复杂的对象(简单的对象,比如临时使用的简单类型等不包含在内),在声明的时候, 都声明两个函数: Initialize 和 Uninitialize, 其中第一个函数对对象进行初始化,第二个函数对对象的资源进行释放,然后定义一个全局数组,数组内包含了所有对象的初始化函数和反初始化函数;
2. 定义一个全局对象, 对系统中所有对象进行管理, 这个对象的名字是 ObjectManager(对象管理器),该对象提供 CreateObjectDestroyObject等接口,代码通过调用 CreateObject函数创建对象,当对象需要销毁时,调用 DestroyObject 函数。第一点很容易实现,只要在声明的时候,额外声明两个函数即可(这两个函数的参数是__COMMON_OBJECT*),声明完成之后,把这两个函数添加到全局数组中(该数组包含了系统定义的所有对象相关信息,比如对象的大小、对象的类型、对象的 Initialize和 Uninitialize 函数等)。对象管理器 ObjectManager 则维护了一个全局列表, 每创建一个对象, ObjectManager都把新创建的对象插入列表中(实际上是一个以对象类型作为 Key 的 Hash 表)。每创建一个对象 ObjectManager 都申请一块内存(调用 KMemAlloc 函数),并根据对象类型,找到该对象对应的 Initialize 数 (通过搜索对象信息数组), 然后调用这个函数初始化对象。对于对象的销毁, ObjectManager 则调用对象的 Uninitialize 函数,这样就实现了对象的自动初始化和对象资源的自动释放

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CHAO_^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值