gpt4 book ai didi

c - 如何在 C 中定义构造函数

转载 作者:太空宇宙 更新时间:2023-11-04 05:01:29 25 4
gpt4 key购买 nike

如何在 C 中创建 Haskell/C++ 风格的构造函数?另外,一旦我有了这个新对象,我该如何在其中定义操作(例如 LinkedList/Tree)?

最佳答案

C 语言不支持面向对象的概念,例如构造函数。

您可以按照以下方式手动实现:

typedef struct
{
int field1;
int field2;
} MyObject;

MyObject *MyObject_new(int field1, int field2)
{
MyObject *p = malloc(sizeof(*p));
if (p != NULL)
{
// "Initialise" fields
p->field1 = field1;
p->field2 = field2;
}
return p;
}

void MyObject_delete(MyObject *p)
{
// Free other resources here too
if (p != NULL)
{
free(p);
}
}

void MyObject_doSomethingInteresting(const MyObject *p)
{
printf("How interesting: %d\n", p->field1 * p->field2);
}

如果你想获得真正的高级,你可以使用非常复杂的宏和函数指针来模拟多态性和各种类型(以类型安全为代价);见this book .

另见 this question .

另见 this FAQ answer如果您有兴趣将面向对象的 C++ 编译成 C。

关于c - 如何在 C 中定义构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6205190/

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