新项目的C与C++之间的比较优势

tyl*_*erl 5 c c++ linux comparison

对于我在POSIX系统上编写的每个新的低级程序或库,我总是要从最初的决定开始:我是用vanilla C编写的,还是使用C++?我想每次我做出一个相对明智的决定,但我想知道是否有一些我缺少的东西.

这不是一个更好的问题,而是每个方面哪个方面更好?据推测,每个人都有引人注目的优势.在哪种情况下我应该选择一个而不是另一个?

例如,下面是我考虑的一些观点.我还缺少什么?

偏爱C

  • 兼容性:实际上,每种语言和框架都有一些与C语言编写接口的机制.
  • 简单:调试模板代码可以让您更快地老化
  • 受欢迎程度:想想所有您喜欢的应用程序,服务器,解释器和其他工具.它们中的大多数都是用C语言编写的,尽管C++在它们启动时可用.所有酷孩子都使用C.

偏爱C++

  • STL:你当然可以实现自己的RB树,快速排序算法或双链表.但它可能不会那么好.
  • 模板:当然,它是一种伪装成语言功能的预处理器功能,但它确实很方便.
  • :C++并不完全是小问题,但至少它不是花哨的汇编语言.
  • 兼容性:您仍然可以在C++项目中使用C.

wil*_*ell 8

我认为你让它变得比实际更复杂.在表达自己的想法时,您最擅长哪种语言?如果不是,如果你是两者的初学者,使用C; 否则,如果你擅长两个选择你的感觉.否则它几乎和刚开始一样无关紧要.

艾丽斯:请你告诉我,我应该从这里走哪条路?

:这取决于你想去哪里

艾丽斯:我不在乎哪里.

:那你走哪条路并不重要.

爱丽丝:只要我到达某个地方.

:哦,你肯定会这样做,只要你走得够久.

  • 归结为:C很简单.这是一件非常好的事情.C++提供了高级抽象工具.这也是一件非常好的事情.那就是你很满意的.这大致归结为它. (2认同)

Jur*_*aho 5

你忘了提到在C++中有自动调用的析构函数,所以如果使用正确(RAII)你不需要担心资源释放.另一个很好的功能是可以使错误处理更容易和更易于维护的异常.


小智 5

C++只有比C更多的功能.这使它成为一种更复杂的语言.但使用这些功能的好处是你必须编写(并使用maintian)更少的代码.

您不需要使用模板,stl,异常,函数重载或任何C++功能.但是如果您的问题需要其中一个功能,那么如果您在C++中执行此程序,您的程序将更具可读性,而不是在C中模拟缺少的功能.