C++程序员应该如何在C中设计软件?

9 c c++

作为C++程序员,我们必须在将它们实现到类之前处理概念和相关概念的关系.

但是,如何用C等程序语言设计软件呢?如何在没有C++类的帮助下处理概念.

有关:

Joh*_*yre 31

如果您熟悉C++,您可能需要考虑在创建类的任何地方创建数据结构,并创建类似于您通常可能创建的类方法的函数,第一个参数接受指向该结构的指针.

  • +1 - 只是因为C没有对象并不意味着你仍然不能在C中使用面向对象的方法(特别是封装).甚至可以对多种类型进行排序.只需看看在Win32 API中使用HANDLE. (9认同)
  • @lothar:它不是"模仿"多态,只是在使用它之前必须提供基础设施.OOP语言不是不同的野兽,只是它们已经包含运行时库和语法糖来使用它. (2认同)

Bil*_*ard 8

在面向对象语言中,您习惯于首先考虑数据对象,然后考虑要将哪些方法或行为应用于这些对象.它有助于程序编程,将您的数据结构与作用于它们的函数分开考虑.


Jul*_*ien 6

您可能还要看一下Glib/GObject,它为C语言提供了一种类机制.它被许多项目使用,它非常强大且经过严格测试.


tim*_*day 6

完全可以将OOP设计原则引入'C'.你错过了一些语法糖,但在一天结束时它只是结构,函数和指针.

看一下glib,gtkgts,看看C语言中OOP编码风格的好例子.


kma*_*rsh 6

如果您要解决的问题很好地映射到功能分解,则只使用功能分解.

记住操作系统,GUI和其他事件驱动的非过程系统都是在Objective C和C++出现之前很久就用C语言编写的.C不是Cobol.

在学习C++之前,我使用函数指针数组在C语言中编写了一个事件驱动的GUI.封装很容易,我没有尝试过多态,一些关系依赖于编码标准和命名约定,因为命名空间和对象不可用.它包含了一个真正的解析器,递归,因为我还没有在Uni上使用Compiler类.是的,它都适合640K,但我确实使用了叠加.

有些人试图使用Structs中的函数指针来伪装伪对象.我没有看到这一点.在某些方面你必须接受你没有使用C++的事实.