老僻贞 发表于 2025-6-4 18:33:47

Design OOP use C

Design OOP use C

使用c语言实现面向对象特性
以底层思维来理解面向对象。我所理解的oop:为不同的数据元提供稳定的处理逻辑框架,同时提供复写的可能,支持不同数据元个性化定制有限的逻辑;
多态特性:
基类实现一组通用处理逻辑接口,子类通过改变特定接口的执行逻辑实现将子类与个性化操作绑定;绑定的手段,C++中通过虚函数表来实现,这里使用类似的思路;
struct vritual_tb {
    void (*ofunc)(void *);
};
struct vritual_tb * virtual_tb_new(void (*overwrite_func)(void *));
void virtual_tb_delete(struct vritual_tb *);

struct base_class {
    char name;
    struct vritual_tb * ifunc;
    void * data;
};

// constructor
struct base_class * base_class_new(const char * name, struct vritual_tb * iface, void * data);
// destructor
void base_class_delete(struct base_class *);

// virtual function
void base_class_call_virtual_func(struct base_class *);类中组合虚函数表结构体,构造类对象时传入个性化动作的句柄(函数指针)构造虚函数表对象,用于实现重载函数:
void
base_class_call_virtual_func(struct base_class * obj) {
    struct vritual_tb * iface = obj->ifunc;
    if(!iface) {
      // basic operate
      return;
    }
    // overwrite operate
    iface->ofunc(obj->data);
}用法:
void
overwrite_func(void * data) {
    // overwrite...
}

void * data = malloc(sizeof("test string"));
struct vritual_tb * iface = virtual_tb_new(overwrite_func);
struct base_class * instance = base_class_new("sub-1", iface, data);
base_class_call_virtual_func(instance);
base_class_delete(instance);
free(data);数据元的生命周期管理交由使用方负责。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

瞪皱炕 发表于 2025-11-7 20:48:05

喜欢鼓捣这些软件,现在用得少,谢谢分享!

峰埋姚 发表于 2025-11-18 11:23:56

热心回复!

后沛若 发表于 2025-12-21 06:37:19

用心讨论,共获提升!

匡菲 发表于 2025-12-30 19:12:34

感谢分享

揭荸 发表于 2026-1-1 11:14:22

谢谢分享,试用一下

班闵雨 发表于 2026-1-5 16:34:21

用心讨论,共获提升!

焦听云 发表于 2026-1-15 09:05:33

用心讨论,共获提升!

杆树 发表于 2026-1-18 21:31:19

热心回复!

驶桐柢 发表于 2026-1-19 00:01:29

鼓励转贴优秀软件安全工具和文档!

眩疝诺 发表于 2026-1-21 14:04:00

东西不错很实用谢谢分享

裆趾针 发表于 2026-1-22 05:31:38

懂技术并乐意极积无私分享的人越来越少。珍惜

抽厉 发表于 2026-1-22 13:33:46

谢谢分享,试用一下

洪势 发表于 2026-1-26 07:40:32

东西不错很实用谢谢分享

常士 发表于 2026-2-2 01:54:42

感谢分享,学习下。

椎蕊 发表于 2026-2-5 05:34:10

新版吗?好像是停更了吧。

俞秋荣 发表于 2026-2-8 21:03:27

这个有用。

剧拧并 发表于 2026-2-10 03:37:16

喜欢鼓捣这些软件,现在用得少,谢谢分享!

猷浮 发表于 2026-2-11 05:07:00

谢谢分享,辛苦了
页: [1]
查看完整版本: Design OOP use C