对于我在POSIX系统上编写的每个新的低级程序或库,我总是要从最初的决定开始:我是用vanilla C编写的,还是使用C ++?我喜欢每次做出相对明智的决定时都会想,但我想知道是否有一些我不知道的事情。
这不是哪个更好的问题,而是每个方面哪些方面更好?据推测,每个人都有引人注目的优势。在哪种情况下我应该选择一个而不是另一个?
例如,下面是我考虑的一些观点。 我还缺少什么?
答案 0 :(得分:8)
我认为你让它变得比实际更复杂。在表达自己的想法时,您最擅长哪种语言?如果不是,如果你是两者的初学者,使用C;否则,如果你擅长两个选择你的感觉。否则它几乎和刚开始一样无关紧要。
爱丽丝:请告诉我,我应该从这里走哪条路?
猫:这在很大程度上取决于你想去哪里
Alice :我不太关心。
猫:那你走哪条路并不重要。
Alice :只要我到达某处。
猫:哦,如果你走的时间足够长,你肯定会这样做。
答案 1 :(得分:5)
你忘了提到在C ++中有自动调用的析构函数,所以如果使用正确(RAII),你不必担心资源释放。另一个很好的功能是可以使错误处理更容易和更易于维护的异常。
答案 2 :(得分:5)
C ++只有比C更多的功能。这使它成为一种更复杂的语言。但使用这些功能的好处是你必须编写(并使用maintian)更少的代码。
您不需要使用模板,stl,异常,函数重载或任何C ++功能。但是如果您的问题只需要这些功能中的一个,那么如果您在C ++中执行此程序,您的程序将更具可读性,而不是在C中模拟缺少的功能。
答案 3 :(得分:2)
对于我自己来说,使用C只有两个理由。首先是如果你需要代码非常便携(将用作不同语言和/或操作系统的库),其次是你需要原始代码速度,这通常不是什么大问题,因为C ++通常只比c稍慢(不包括OO功能)。
我非常喜欢C ++的OO功能,如果使用得当,可以在开发应用程序时轻松生活。
答案 4 :(得分:1)
听起来你喜欢C over C ++。我也做。但是,易用性是编程中最重要的因素。 C ++有更好的字符串支持和更多的库,因此对于非平凡的项目,例如数据库访问和类似的东西,请使用C ++。如果你的目标是跨平台,也许想在较低的水平上工作,那么使用C.此外,无论如何,它们都是相同的。
答案 5 :(得分:1)
C ++在几乎所有方面都更好:更安全,更高效,在大型项目中效果更好......唯一的例外是当你与其他语言交互时你不能使用它。但在这种情况下,您仍然使用C ++并为接口部分添加一个小C层。
答案 6 :(得分:0)
是的,也可以在C语言中编写类似C ++的内容,但它要复杂得多,难以维护。
答案 7 :(得分:0)
当我有选择时,我会使用C ++的子集。
你仍然可以获得课程和RAII的优势。