【发布时间】:2012-05-27 18:03:22
【问题描述】:
可能重复:
Can you write object oriented code in C?
Object oriented programming in C
所以,据我所知,“对象”基本上只是值和方法的包装器。你不能在 C 语言中拥有与structs 相同的功能吗? struct 看起来就像一个简单的class,但是,当然,它没有任何方法。在这里,我们进入了我的问题的核心:我根本不明白为什么需要方法。如果我们有一个外部函数,它只接受一个指向struct 实例的指针,难道不是更简单、更节省内存吗?或者甚至让structs 有指向这些函数的指针,但这似乎纯粹是美学......
【问题讨论】:
-
确实,不将方法绑定到类意味着您可以拥有可以专门处理多个参数的泛型函数,而不仅仅是“
this”——我们开始了解CLOS 的generic functions(这与其他语言中类似名称的事物无关,除了 Dylan)。 -
如果我们有一个外部函数,它只接受一个指向结构实例的指针,难道不是更简单、更节省内存吗?当您将成员函数添加到结构时,C++ 中会发生什么。编译器将它们移到“外部”并在调用中添加一个
this指针。 -
你认为面向对象的语言(Java、Python、Ruby)大部分都是用C实现的,所以是的,当然C也可以是面向对象的。但这并不意味着它很容易或方便。
标签: c oop class architecture struct