纯C模仿面向对象编程?

时间:2011-02-04 09:44:48

标签: c oop

  

可能重复:
  Object oriented programming in C
  Can you write object oriented code in C?

您好

我知道有一些模仿面向对象编程的纯C的编码样式:“对象”(struct).c和.h组织的“方法调用”(函数),依此类推......

你对此有什么习惯?

是否有一些很好的教程?还是例子?

2 个答案:

答案 0 :(得分:4)

你应该明确地看看GTK+ Project 使用事件,窗口小部件的层次结构,通过大量代码,您将获得关于C中的OO如何看起来的良好印象。 甚至有一个很好的实现反射(其他编程框架,如Java或.NET或多或少内置)称为“内省”。

Gtk +绝对是C语言中面向对象编程的一个很好的例子。

答案 1 :(得分:0)

一种常见的方法是设计一个前向声明结构的头文件,然后定义一些函数,这些函数将指向该结构的指针作为“this”指针。例如:

struct vector; // Forward-declaration; no implementation shown.

struct vector* VectorNew(/* ... */);
void VectorAppend(struct vector* this, void* toAppend);
size_t VectorSize(const struct vector* this);

然后,在.c文件中,您实际上可以提供完整的结构定义和相关的函数定义。这可以防止客户端读取原始字段,因为它们只在.c文件中,并通过使用一致的前缀为“成员函数”提供一种“命名空间”。