gpt4 book ai didi

c - 如何在 C 中模拟 OO 风格的多态性?

转载 作者:太空狗 更新时间:2023-10-29 16:16:08 25 4
gpt4 key购买 nike

有没有办法用 C 编程语言编写类似 OO 的代码?


另见:

通过搜索“[c] oo”找到。

最佳答案

第一个 C++ 编译器(“C with classes”)实际上会生成 C 代码,所以这绝对是可行的。

基本上,您的基类是一个结构;派生结构必须在第一个位置包含基结构,这样指向“派生”结构的指针也将是指向基结构的有效指针。

typedef struct {
data member_x;
} base;

typedef struct {
struct base;
data member_y;
} derived;

void function_on_base(struct base * a); // here I can pass both pointers to derived and to base

void function_on_derived(struct derived * b); // here I must pass a pointer to the derived class

函数可以作为函数指针成为结构的一部分,因此像 p->call(p) 这样的语法成为可能,但您仍然必须显式地将指向结构的指针传递给函数本身。

关于c - 如何在 C 中模拟 OO 风格的多态性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/524033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com