Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C和C++;什么时候你会选择一个而不是另一个?_C++_C_Programming Languages - Fatal编程技术网

C++ C和C++;什么时候你会选择一个而不是另一个?

C++ C和C++;什么时候你会选择一个而不是另一个?,c++,c,programming-languages,C++,C,Programming Languages,对于你们当中有这两方面经验的人来说,主要的区别是什么?对于一个新手来说,哪一个更适合学习?是否有可能选择C,但在其他情况下你会选择C++?这是一种使用最佳工具的情况,还是一种工具明显优于另一种工具。我知道C++是C的一个“增强”,但是它是在83中创建的,还没有完全取代C,所以肯定还有更多的东西。 我知道这个问题是主观的,我不想发动任何宗教战争,所以请尽量客观。明确优势、劣势和比较。C++99%是C的超集。它在语法上有点严格,在变化方面有一些细微的差异 最大的区别是C++试图实现面向对象。有对类的

对于你们当中有这两方面经验的人来说,主要的区别是什么?对于一个新手来说,哪一个更适合学习?是否有可能选择C,但在其他情况下你会选择C++?这是一种使用最佳工具的情况,还是一种工具明显优于另一种工具。我知道C++是C的一个“增强”,但是它是在83中创建的,还没有完全取代C,所以肯定还有更多的东西。
我知道这个问题是主观的,我不想发动任何宗教战争,所以请尽量客观。明确优势、劣势和比较。

C++99%是C的超集。它在语法上有点严格,在变化方面有一些细微的差异

最大的区别是C++试图实现面向对象。有对类的本地支持

在C++中还有一些其他的额外功能:模板、流操作符、按引用传递(比按指针传递稍微容易混淆)


<>你为什么会输给C++?它缺少了很多人使用C语言进行的一些最低级别的黑客攻击。我一下子记不起它们中的任何一个,但是我从来没有听到过任何好的论据来欺骗编译器去做你想做的事情,除了作为提高额外10%的效率的一种方式。

C++正如它的名字所暗示的,正如你在问题中所说的,是C的一个增强。这是一个显著的增强。(我用“增强”这个词来指的是功能,而不是功能。)不过,增强的意思是增长。C++通常适用于更大的程序。应用程序,真的。这是一种高性能语言,但它很大

C、 另一方面,用于内核和驱动程序编程是有原因的。它很旧(古老?),很小,如果你聪明的话,可以在不自己编写汇编程序的情况下以最快的速度运行。很明显,折衷的办法是特性。C没有很多好的大的概念,比如类和模板,C++程序员喜欢我自己是理所当然的(没错,完全有罪)。
因此,为了更直接地回答您的问题,我的大部分大型、高性能项目都用C++编写。如果我在做驱动程序或嵌入式系统之类的工作,我希望使用C。

如果你从未使用过需要手动内存管理的语言,我会先使用C

专注于C基础知识,如字符串、函数指针,以及如何使用和管理内存。当您转换到C++时,这些都将转移。最重要的是,确保您真正了解指针、它们与内存的关系以及指针和数组之间的关系。我想说的是,作为一名全面的程序员,理解这些东西是必需的


<> P> >进入C++学习OO模型、模板等。从一开始就尝试做C++中的所有事情都有点压倒。

< P>而C是纯过程语言,C++是一种多范式语言。它支持

  • 通用编程:允许编写一次代码,并将其用于不同的数据结构
  • 元编程:允许利用模板在编译时生成高效的代码
  • 检查:允许在编译时检查某些属性:表达式有什么类型?一个函数有多少个参数?每个都有什么类型的
  • 面向对象编程:允许程序员编写面向对象的程序,具有复杂的特性,如多重继承和私有继承
  • 过程编程:允许程序员将函数从任何类中释放出来。结合ADL等高级功能,可以编写与特定类的细节分离的干净代码

除此之外,C++在很大程度上保持了与C代码的兼容性,但也存在一些差异。这些可以在C++标准附件D中阅读,连同原因和可能的固定,使C代码有效的C++代码。P> >我会提出这样的论点:在大多数情况下,你最好用C++来代替C。如果你不想使用C++,那么你不必使用所有复杂的特性。对于大多数情况,C++添加了一些有用的东西:

  • 更强的打字能力
  • 标准库中包含的字符串类
  • 一个数组类(vector),它根据需要增长,并为您处理所有内存分配和释放
个人觉得,即使使用C++编写C类代码(AKA过程性的、非面向对象的代码),我认为这三种东西都值得使用。

也许如果你正在做内核黑客或嵌入式系统开发,你应该使用C,但是,否则,我建议C++。 对于你们当中有这两方面经验的人来说,主要的区别是什么

C是子集,C++是超集。C++包含支持面向对象编程(例如“多态性”)的特性,以及许多其他特性。 对于一个新手来说,哪一个更适合学习

C更容易(因为它是一个较小的主题),C++更优秀(因为它更强大,包括C,而且在我的经验中C++中的作业编程比C中有更多)。

有可能选择C,但在其他情况下你会选择C+++< /p>


<>我在C平台上选择C++,在这种罕见的情况下,目标平台支持C而不是C++(即在一些嵌入式设备上)。

< p>你可以使用C++,在哪里你可以使用C。一般来说,如果你的平台上有一个C++编译器,没有理由不使用它。C是一种非常好的语言,但是C++增加了很多额外的内容,而不会失去任何的力量,所以它几乎总是选择的语言。