C与C++ 的真正区别在哪里?_c和c++区别大吗

由网友 十三乱谈 提供的答案:

C与C++的主要区别在以下8点:

1. C++支持面向对象编程,C是面向过程的语言。C++可以定义类和对象,支持继承、封装和多态等面向对象特征。C只有函数,没有类和对象的概念。

2. C++支持函数重载,C不支持。C++可以有多个同名函数,只要参数类型或个数不同即可。C只能有一个函数名。

3. C++支持运算符重载,C不支持。C++可以重定义运算符的操作数和功能。C的运算符功能固定。

4. C++支持模板,C不支持。C++模板可以产生泛型代码和算法。C只有宏替换,没有模板的概念。

5. C++支持异常处理,C不支持。C++可以使用try/catch块来捕获和处理异常情况。C无法处理异常,会导致程序崩溃。

6. C++支持引用,C不支持。C++引用可以作为函数参数和返回值,起到别名的作用。C只有指针,没有引用的概念。

7. C++支持命名空间,C不支持。C++的命名空间可以避免命名冲突,实现逻辑上的分组。C的所有函数和全局变量共享一个全局命名空间。

8. C++标准库更加丰富。C++标准库不但包含了C标准库的所有内容,还有STL、string等更丰富的内容。

所以,C++相比于C,拥有面向对象、函数重载、运算符重载、模板、异常处理、引用、命名空间等更丰富的语言机制和特性,这是两者的根本区别。C++是一个面向对象的程序设计语言,C是一种过程化的语言。

由网友 BWanger软件开发达人 提供的答案:

C与C++的真正区别,就是面向对象以及类概念的引进。正是因为这两个概念的引进,使得编程变得简单,编程的逻辑变得非常清晰。

C++引进了类class,使得大型软件开发,可以做到分工协作,组装,调试容易,bug容易厘清。

用C编程很麻烦,首先要用著名的project把要编绎的C,H文件码一起,一个也不能遗漏。组织起来很麻烦。

C++,用类class封装。如,一个大型应用程序,其中有文件及字符编辑界面,可以用一个CFileEditClass类,图形描画CGraphDrawingClass,数据传输类CCommunicationClass,语法分析CExplainClass,轨迹计算类CContuarClass等等。

每个类是独立的。如CFileEditClass类,可以实现应用程序界面中的文件打开、保存、删除、传输、字符编辑等功能。可以安排一个人做。

每个类也是相互可引用的。如在图形描画中,可引用CFileEditClass中的文件打开成员,也可用轨迹计算类CContuarClass中的轨迹处理成员,生成描画数据。

C++除了可用C的libaray库函数处,也可用MFC的标准类库。MFC的标准类库容丰富,也很好用,几乎涉及windows、通讯、网络IO内存操作等所有编程要用的函数。

在出现问题时,我们很容易检查出是那个类出了bug,有针对性地进行检查。

C++的面向对象编程,逻辑非常清楚。保证了多线程之间消息的传输。

面向对象的类封装、继承,是C++一大革命性的创举。

比如,我们要做六个页面,他们有共同的颜色色调,相同的大小,字体、字号一致等等共性,在C语言开发的,写一个公共的函数,来初始化每一个页面。

但对于C++,有一个更好的方法,那就是构建一个公共的父类,如CommonPropertySheet,在这个类中,除了以上的共有属性外,还可增加消息的传输,异常的处理等,用来解决各PropertySheet之间,以及与windows其它线程之间的消息传送,更好地实现多线程之间的数据协同。

C++还有更多的优点,如在字符串处理、通信处理、图像处理等上,更精确。我是1998年开始从C转到C++的。我觉得,不论是底层开发,还是windows的应用程序开发,只要环境允许,尽量使用C++类进行软件开发,一定会受益匪浅。

由网友 CodeWizard 提供的答案:

真正的区别在于: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语言施展的空间还是很大。很多大型的游戏引擎底层图形库的实现也有C语言的功劳。

从理论上来说C语言能做任何事情,但不同场景可能是别的语言相对来说更加合适,效率更高。比如做个web服务器,用C语言一点点的都能实现,交给java去做,搭建几个框架几个回合就完成了。不是能不能的问题,是谁最合适的问题。

C语言就业岗位少

细心的可以留意下C语言的工作岗位,招聘的人数相比别的职位就是少,因为C语言参与的岗位基本上靠低底层,随着近几年产业的发展,很多底层的东西已经积累的差不多了,很多都是一些维护性的工作。而且真要修改里面框架性的东西,需要对C语言有非常深刻的了解,这种人需要工作很多年才可以。

目前C语言主要在底层驱动开发,操作系统,通讯领域用得多些,这些领域基本上很成熟了,所以对应的岗位也就少了,现在大家基本上去玩一些小快灵的软件,比如app,小程序,开发周期短来钱也快,这也属于社会发展的一个趋势。(←抓趋势:学习app开发方法,拓宽技能)

#最近公司招聘两个岗位一个是web后台开发,一个嵌入式开发,投送简历的比例差不多是十比一,从这个态势看学习C语言的比例相比前几年热度下降了许多,因为大家从招聘力度上看要C语言的公司比例很低,而且相对来说C语言学习起来还难入门,所以越来越多的人选择学习更加好入门的语言,这也是语言发展的一个趋势,编程语言的发展朝向简单化,模块化的方向发展。

由网友 功名尽在长安道 提供的答案:

C和C++最大的区别就是一个是结构化语言,一个面向对象。从层级上来说C更加面向底层硬件,而C++更加面向应用层。C++是在C的基础上增加了类的封装与继承。使得C++通用性,拓展能力更强,因此生态环境可以搭建的很好。类库的资源也非常丰富,需要的时候直接调用就好。而且类可以继承,这样就可以一级一级的向上开发,使得功能越来越具体。

c就不行,结构化模块导致不同场景要反复设计代码。通用性不好。但执行效率相对较高,可以作为底层硬件的驱动程序,API接口程序,单片机程序等。。。的开发语言。

由网友 说客不言 提供的答案:

什么这语言那语言,一切都是从c语发端而来的。越是往高深处开发,c语愈发突现。如果把c比喻为骨格,那么其他的语言就是皮肤外表,看着迷人实则都是表面功夫,不知所以然。

为什么你必须学c语言,因为不学会爬,怎么能行走?当你不断的深入学习,会发觉,所有语都是相同的,因为编译器都c语言写的,规定了你只这么样,这样做。什么函数,类,对像,都能用c语写出来与机器交流。c语也是底层语言,是汇编的语言编译版本,只不过看着较为好理解。c也可以叫编译语言。

很多程序员都只是做表面的东西,根本做不了高深的东西。认知也是一知半解,至多是打码的。基础不牢地动山摇。

C与C++ 的真正区别在哪里?_c和c++区别大吗

由网友 wanming 提供的答案:

没有什么语言能比C++更加贴近Windows本身了,这一点也是不可否认的。如果哪一天C#也能写驱动的时候,那么C++就真的会淘汰了(这天可能不会太远又或者很遥远)。   C#能做的,C++不一定都能做,C++能做的,C#也不一定都好做,所以经常看到有人拿这2个语言对比,我觉得确实没什么必要。   C#繁杂的调用Win32 API的方式,确实让人很不舒服,C++这一点做得比它好。但是,C#强大的网络操作,代码量大大地低于C++,我们抛弃不用Socket,改用WinInet或是MFC中的封装好的网络类,比如CHttpFile,还是没C#简单。C#的傻瓜式的类库操作和面向对象编程的完美特性,确实让其成为了Windows平台上最受欢迎的语言。也许,是微软想将Win32 API渐渐地全部封装到C#的类库中去,我感觉微软有这个意图,也许将来C#就不需要调用那些繁杂的Win32 API了,类库中均有提供也说不定。   我们为什么学VC?这点我曾经也问过自己。圣经上说:你必须知道真相,真相会使你自由。我们学VC是为了自由,不受微软的框制。微软通过种种的FrameWork让你陷于其中,你觉得,哇,原来编程是这么容易啊,几句话就能搞定。你想知道微软在内部干了些什么呢?你不知道,当然,你如果认为你没必要知道,这个我完全赞同,我后面会说。就说杀进程吧,C#中不通过Win32 API就那么一种方式,通过System.Diagnostics.Process找到进程,然后Kill之(如果我说的不对,使用C#的朋友请指正),而C++中,我们完全有无数种选择,就说不邪恶的,TerminateProcess,邪恶点的呢?不计其数。进程内存填0,卸载模块,消息洪水,句柄强制关闭,强制释放它的堆,太多太多了,甚至我注入进去,内部Raise一个异常,它也就挂掉了。保护进程, 不管内核下还是应用层,C#肯定是做不了的,C++有自己高端的地方,其他语言无法涉足。你见过C#做的杀毒软件吗?   C#,极其简易的界面操作,令人看着很舒服的编码,他有太多的地方,C++根本无法涉足。拿C++做Web Services除非是大脑进水,用C++做网络蜘蛛,也根本是无聊之举,要么就C#,要么就拿Python来干(个人漏见),超级大量的数据,拿垃圾回收基本上为0的C++去做,简直就是自找麻烦。C#的WebForm,和Jsp占据着Web的大片江山,C++能吗?不能。C#是一门博大精深的语言,类库强大到变态,基本上可以这么讲,所以用C++的朋友也不能随便贬低C#程序员,C#的程序员的层次分得比C++多很多,高层的也是象牙塔级别的。C#的架构师,那种恐怖的实力,C++中级程序员是无法想象的。C#更加注重于软件工程的应用,各种设计模式的使用,C++则注重于实现功能。   C#的前景是不错的,我个人很看好它,MSDN 杂志每期的文章可能有8成是C#,C++不算很多,微软的重心可能在C#上,希望C#逐渐能取代C++。但是C++会这么容易被取代?不可能。就像一个搞管理的,你让他接管搞开发的人,让他从干一样到同时兼干这二样,会有这么简单么?c++的生命力至少还要7-8年,之后才会渐渐的淡出,但是只要追求自由的人存在,C++就不会消失;只要操作系统一天是用C++写的,C++就不会消失。   选什么语言,随自己高兴,需要哪个用哪个,这是不矛盾的。开发数据库,我倾向于用C#,做Windows底层,我肯定是C++,都掌握下没有坏处。VS2010中C++的新特性各位同胞可以关注下,不知道会加入什么,VC2008的特性我探索了这么久,还没有探索结束。C#是越来越好用了,Linq to Sql让不懂数据库的人都能去操做数据库了,辅助一些第三方类库,能发挥强大的威力。完全取代C++,等操作系统是C#写的,C#能开发系统中的一切组件的时候再说吧,至少现在C#还不能开发API,驱动吧?

部分文章源于互联网收集,不代表默子网络立场,版权归原作者所有,如若转载,请注明出处:https://www.html369.cn/20137.html