2010-09-23 46 views
4

可能重复:
Can you write object oriented code in C?面向对象程序设计

嗨,可有人点我一个教程解释我如何OOP概念可以在ANSI C实现:

  • 虚拟功能
  • 继承
  • 最佳实践

约OOP编程ANSI C书将是巨大的。

+2

试图锤正方形OO栓成圆Ç孔会导致重写C++。只需使用C++或其他语言。 – 2010-09-23 13:52:19

+0

我没有问*是可能的吗?*但是*如何实现*。而作为GTK +,GGlib是以OOP风格在ANSI C中完成的,它可能有一些存在的权利。 – drahnr 2010-09-23 15:59:48

回答

6

这是本书的链接:http://www.planetpdf.com/codecuts/pdfs/ooc.pdf(Ansi-C中的面向对象编程 - 确切的说你在找什么)。

祝你好运,并有耐心。用C写OOP不是一件容易的事情,但如果你喜欢极端的事物,可能会有所收获!

另一个起点将是检查的GObject:http://library.gnome.org/devel/gobject/和@unwind说GTK是如何使用C. OOP概念的很好的例子,你也可以采取在GLib,是一个很好的库,肯定会令你的C编程生活变得更加容易,它以OOP方式进行编程,并且作为一个优点便携!

+0

GTK +是我想使用的用户界面,因此我_want_学习如何正确使用它。但不幸的是,我宁愿通过讲座来做它,而不是反向工程,这需要更多的时间。 – drahnr 2010-09-23 15:54:59

+0

如果你想使用GTK +,你不仅仅限于C,还有其他语言的绑定,所以你可以开发GTK应用程序:C++,python,vala,C#甚至是Java。 – 2010-09-23 16:03:39

+0

我也知道,但我希望/需要/倾向于重新使用以OOP风格C编写的现有GPLv2项目的代码,这就是要点,而且我不会使用extern或C++ hackz。从长远来看,我认为Linux内核(长期来看) – drahnr 2010-09-23 16:07:45

8
  1. Objective-C不是C--它是一种不同的语言。
  2. C不是面向对象的语言。有可能做一些OO风格的东西,但这不是它的目的。
  3. C中的最佳做法是程序性的。
+0

1.我知道,这个问题不是关于Objective-C,我也没有注意到它。 2.这是我的观点。我知道它是用于过程编程的,但是nobodysaid我只想使用它的设计。 3.参见2. 4。如果你根本没有回答我的问题,我认为我已经足够好地指出了这个观点:我想知道_how_而不是_它是明智的,所以eitherawser我的问题或只是不回答。这是劫持。 – drahnr 2010-09-23 15:51:58

+0

@penguinpower:我说Objective-C的原因是你的一个标签是[objective-c]。我并不是说C在C中做OO是不明智的,只是从你的问题来看,你没有意识到这个区别。我不是故意劫持你的问题 - 我试图帮助基础知识。 – Skilldrick 2010-09-23 18:18:50

+0

必须是拼写错误,从我的手机启动线程,不幸的是,它具有德语的自动完成功能:/如果您觉得我的评论是冒犯性的,那么它不应该是冒犯性的。 – drahnr 2010-09-23 21:09:39

4

我会建议看看GTK+ GUI toolkit的内部。这是一个用C语言编写的面向对象的系统,展示了你之后的技术。它是开源的,所以没有任何东西阻止你阅读和学习。

1

面向对象机制没有被定义为C语言的特性。你将不得不通过在C的程序性质之上添加自己的逻辑来模拟面向对象的方法。用一种不是为此而设计的语言会非常难看。

上,一个良好的教程:http://www.planetpdf.com/codecuts/pdfs/ooc.pdf