我想知道是否可以使用严格的ANSI C作为面向对象的语言。如果可能的话,我如何在ANSI C中创建一个类。尽管该语言不是为OO设计的,但我真的很想尝试这个。
赞赏任何示例,链接等。
答案 0 :(得分:6)
C没有通过类直接支持OO,但您可以轻松地模拟它。
如何执行此操作的基础是,您可以创建一个包含数据成员的结构和一个相关的函数列表,这些函数将指向该结构的指针作为它的第一个参数。
答案 1 :(得分:4)
这当然是可能的,虽然我不喜欢这样做。面向对象C的流行方法之一可以在Gnome中使用的GObject架构中找到。这篇文章(以及关于GObject的进一步阅读)应该给你一些想法:
答案 2 :(得分:3)
结构可以包含方法和变量,例如
struct myStructFoo{ int fooBar(); int privFooBar; };
这就是你如何使用普通的旧的ANSI C编译器派生OO“的东西”,如果你想用C ++学习完整的OOP,你会更好地使用ANSI C ++编译器,因为它更适合你的需要。 ..使用C语言的OOP样式是....以这种方式看待它,确保你可以使用一个结构使用一个对象,但名称并不完全......直观...作为{{1}更多用于保存字段,并且是整数数据结构的一部分,例如链表,堆栈,队列等。如果你有ANSI C ++编译器,它的外观如下:
class myFoo{ public: int fooBar(); private: int privFooBar; };
比较并看看它看起来更直观,通过struct
和public
关键字指定信息隐藏。
答案 3 :(得分:1)
实际上正在进行一项名为OOC language的努力,以编写一种面向对象的C语言。它与C略有不同,因此根本不是C语言中的对象,而且我个人从未使用它 - 根据我的口味,它与C相差太远,但它可能值得一看。
有趣的是,在编译之前将“OOC”转换为C.可能值得一看它是如何实现这一点的,因为它将有效地将对象转换为C.我怀疑这将像其他海报提到的那样完成(结构指针等),尽管我还没有看过它。
答案 4 :(得分:0)