【问题标题】:Pure C that mimics object-oriented programming? [duplicate]模仿面向对象编程的纯 C 语言? [复制]
【发布时间】:2011-06-21 06:12:21
【问题描述】:

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

我知道纯 C 有一些模仿面向对象编程的编码风格:“对象”(结构).c 和 .h 组织上的“方法调用”(函数),等等......

你对此有什么习惯?

有什么好的教程吗?还是例子?

【问题讨论】:

标签: c oop


【解决方案1】:

你应该看看GTK+ Project 通过大量代码派生、使用事件、小部件层次结构,您将对 C 中的 OO 外观有一个很好的印象。 甚至还有一个很好的 Reflexion 实现(Java 或 .NET 等其他编程框架或多或少内置)称为“自省”。

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

【讨论】:

    【解决方案2】:

    一种常见的方法是设计一个前向声明结构的头文件,然后定义许多函数,这些函数将指向该结构的指针作为“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 文件中,并通过使用一致的前缀为“成员函数”提供一种“命名空间”。

    【讨论】:

    • 查看标准库FILE * 类型以了解此想法的实际效果。当然,这只是可以用 C 实现的 OO 思想的一个子集。
    猜你喜欢
    • 2010-11-15
    • 2015-04-24
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    • 2010-10-31
    • 1970-01-01
    • 2018-05-21
    相关资源
    最近更新 更多