一些区别: C: 编写C代码,写出来的是C代码。 C++:编写C++代码,写出来的是还是C代码。 C:运行时内存错误。 C++:看起来像是运行时内存错误。 C:编译器警告你。 C++:编译器警告它自己。 C:1天学会,1年掌握。 C++:1年学会,-1年掌握。 C:Goto有害。 C++:C++可以无害。 C:入门语言。 C++:出门语言。 C:面向过程。 C++:面向C++。 C:一切皆指针。 C++:一切皆编译器。 C:烂代码能轻易编过,也能轻易调过。 C++:烂代码不能轻易编过,也不能轻易调过。 C:说精通的可能精通。 C++:说精通的肯定不精通。 先说一个实际情况,有相当一部分程序员仅仅把c++当成能够在任意地方声明变量的c语言来写程序。即使使用类、继承之类的特性,也是比较蹩脚的套概念。 好,下面针对题主的问题进行回答: 语言特性前面答主已经列的很详细了,类、模板这些特性都是现代高级语言的特性,这些特性使得c++可以支持非常复杂的开发模式。 使用场景,个人观点,所有c可以实现的复杂工程,都可以用c++优雅的实现。甚至包括操作系统内核。c++对于指令、内存的操作的能力是从c继承过来的,所以要求精确到汇编级的程序可以用c++开发。另外因为c++有面向对象的能力,所以c++可以以脚本语言的形式开发大型复杂工程。 对于设计哲学,c++与c完全是两门语言。c++是一种提供多种开发范式的面向对象的语言,而c语言仅仅是面向过程的语言。用c++来解决问题,可以优雅的将问题抽象成各种实体部件,相互配合“合力”将问题解决。用c来解决问题,总是将大的过程分解成小的阶段或小的过程,把各阶段或小的过程结果汇总最后将问题解决。 最后,如果面试官用这个问题来问应届生,可能意义不大,没有写过足够量代码的程序员,确实无法将这个问题讲清楚。 C++实际上是一个独立于C的语言,说C++是C的超集的人根本没意识到C++语言特性的强大。 C++之所以有不少缺点是因为C++为了兼容C所以历史抱负太重。 至于不支持GC以及其他所谓的缺点都只不过是没有开发出来罢了,用C++的语言特征完全可以实现GC。 如果说C++开发的时候不够安全,只能说开发者的水平不够。 C能实现的东西能用C++更优雅更高效地实现,C++能实现的东西用C却不一定能实现。 。 |
|