对于那些对两者都有经验的人来说,它们的主要区别是什么?对于任何一个新手来说,学习哪一个会更好?有没有可能先选择C语言,然后再选择C++的情况呢?这是一个使用工作的最佳工具的案例,还是一个明显优于另一个的案例。我知道C++是C的“增强”,但它是在83年创建的,还没有完全取代C,所以它一定有更多的东西。
我知道这个问题是主观的,我并不是要挑起任何宗教战争,所以请尽量客观一点。明确优势和劣势,并进行比较。
发布于 2009-01-14 06:39:18
C是一种纯过程语言,而C++是一种多范式语言。它支持
表达式泛型编程:允许只编写一次代码,然后在不同的data-structures.
除此之外,C++在很大程度上保持了与C代码的兼容性,但也存在一些差异。这些可以在C++标准的附录D中阅读,以及使C代码有效的C++代码的原因和可能的修复。
发布于 2009-01-14 06:22:41
C++是C的99%的超集,它在语法上更严格一些,在变化方面有一些非常微小的差异。
最大的不同之处在于,C++尝试面向对象。有对类的本机支持。
在C++中还有一些其他的好处:模板,流运算符,按引用传递(比指针传递少了一点混淆)
使用C++你会失去什么?它缺少了很多人使用C来实现的一些最底层的技巧。我不记得他们中的任何一个,但是我从来没有听到过任何关于欺骗编译器去做你想做的事情的好论点,除非是作为一种提高效率的方法。
发布于 2009-01-14 06:27:23
C++,顾名思义,正如你在问题中所说的,是对C的增强,这是一个重要的增强。(我使用“增强”这个术语来指特性,而不是指功能。)然而,关于增强的事情是它意味着增长。C++通常将自己借给更大的程序。应用程序,真的。它是一种高性能的语言,但它很大。
另一方面,C用于内核和驱动程序编程是有原因的。它很旧(古老?),很小,而且如果你聪明的话,可以在不自己写汇编程序的情况下尽可能快地运行。显然,权衡的是功能。C没有很多像我这样的C++程序员认为理所当然的好的、大的、模糊的概念,比如类和模板(是的,完全有罪)。
因此,为了更直接地回答您的问题,我的大多数大型、高性能项目都是用C++编写的。如果我正在开发像驱动程序或嵌入式系统这样的东西,我会期望使用C。
https://stackoverflow.com/questions/443090
复制