【问题标题】:Object Oriented pattern in C? [duplicate]C语言中的面向对象模式? [复制]
【发布时间】:2010-11-15 03:36:05
【问题描述】:

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

我正在用 C 语言编写一个大型应用程序,并且听说在 C++ 程序员出现之前使用 C 语言实现“面向对象”模式。我的问题是这种模式采用的通常形式是什么?我将如何在现代 C 应用程序中实现这样的 OOP 模式?

【问题讨论】:

  • 我讨厌这样做,但你搜索过吗? google.com/search?q=object+oriented+c
  • rye 常见问题解答中没有任何内容说“如果可以在 google 上轻松找到答案,请不要在这里提问。” SO 应该是一个参考,就像一个问题网站一样。
  • 在问 Q 之前我确实在 google 上进行了搜索,但我对很多结果都不满意。我也很好奇那里有什么不同的模式,特别是。那些经过资深程序员实战考验的,并不是某些人认为可行的。
  • 嘿,搜索链接在 cmets 中无法正常工作!我要去元...
  • @Spencer Ruport:但是你应该避免不必要地重复在 StackOverflow 上容易找到的东西,就像这里的情况一样。

标签: c oop


【解决方案1】:

另外一个link 来自为 C 编写了几个 OO 框架的人。

【讨论】:

    【解决方案2】:

    以下是一些有用的面向对象 C 指南的链接:

    【讨论】:

      【解决方案3】:

      在 C++ 对象有方法的地方,对象风格的“C”采用一个充满函数指针的结构。对应于成员函数的函数有一个显式的数据参数来代替隐含的“this”指针。

      子类使用相同类型的函数指针结构,用不同的函数指针表示被覆盖的方法。

      【讨论】:

        【解决方案4】:

        我过去常常简单地采用结构和相关“方法”的命名约定。 每种方法都以例如开头CANDIDATE_ 用于候选对象,并与 typedef CANDIDATE { ... } 相关联,并在文件 Candidate.c 中

        【讨论】:

        • 这种方法一直对我有用。比拥有一个需要在某个地方初始化的函数指针结构要容易得多。缺点是没有它们你不能做虚函数......
        猜你喜欢
        • 2011-06-21
        • 1970-01-01
        • 1970-01-01
        • 2015-04-24
        • 2018-08-02
        • 2013-02-17
        • 1970-01-01
        • 1970-01-01
        • 2011-08-01
        相关资源
        最近更新 更多