用C编写面向对象代码有哪些方法?特别是在多态性方面。
另请参阅此堆栈溢出问题C中的面向对象。
用C编写面向对象代码有哪些方法?特别是在多态性方面。
另请参阅此堆栈溢出问题C中的面向对象。
当前回答
这个问题的答案是“是的,你可以”。
面向对象的C (OOC)工具包是为那些希望以面向对象的方式进行编程的人准备的,但它也沿用了优秀的老C。OOC实现了类、单继承和多继承、异常处理。
特性
•只使用C宏和函数,不需要语言扩展!(ansi c)
•易于阅读的源代码为您的应用程序。小心翼翼地使事情尽可能简单。
•类的单一继承
•通过接口和mixin进行多重继承(从1.3版开始)
•实现异常(纯C!)
•类的虚函数
•易于类实现的外部工具
欲了解更多详情,请访问http://ooc-coding.sourceforge.net/。
其他回答
我建议使用Objective-C,它是C的超集。
虽然Objective-C已经有30年的历史了,但它允许编写优雅的代码。
http://en.wikipedia.org/wiki/Objective-C
是的,但我从未见过有人尝试用C实现任何类型的多态性。
看看GObject。它应该是C语言中的OO,是您正在寻找的东西的一个实现。如果你真的想要面向对象,那就使用c++或其他面向对象语言。如果您习惯了处理OO语言,那么GObject有时真的很难使用,但是像其他东西一样,您会习惯它的约定和流程。
当然这是可能的。这就是所有GTK+和GNOME所基于的框架GObject所做的工作。
如果您确信面向对象的方法对于您正在尝试解决的问题更优越,那么为什么还要尝试使用非面向对象的语言来解决它呢?看来你用错工具了。使用c++或其他面向对象的C语言变体。
如果你问这个问题是因为你要开始在一个已经存在的用C编写的大型项目上编写代码,那么你不应该试图将你自己的(或其他人的)OOP范式强加到项目的基础设施中。遵循项目中已经存在的指导方针。一般来说,干净的api和独立的库和模块将有助于实现干净的面向对象的设计。
如果,在所有这些之后,你真的打算做OOP C,请阅读这篇文章(PDF)。