C语言与C++的区别.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
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++ 的区别有什么?其他的东西都不需要多说,就象类,继承,引用等, 大家都知道。这里讲的是调用编译的区别 .大家看 WIN32 SDK 的头文件 ,总是可 以看到 : ifdef __cplusplus extern C endif ifdef __cplusplus endif 这个就是直接能够体现实际编程时区别的地方。在 WIN 系列下,所有的 WIN32 SDK 提供的 LIB 都是以 C 的形式存在的。当然, C 和 C++ 同样都支持 C , STDCALL ,FASTCALL 调用 。为什么系统提供 C 编译器编译的 LIB 而不是 C++ 编译的 LIB 呢?这里其实就是 C 和 C++ 编译器不同的地方。 所有的函数名称只有在汇编编译器下才最清楚 。因为经汇编编译器编译的函数不 经过任何修饰。 C 的编译器编译出来的函数名称如果在汇编编译器看来一个 C 调用将在函数名 前家下划线 (_) 。而一个 STDCALL 的函数将是 _FUNC@NUMBER 的形式,如 FUNC(void) 经过编译器后成为 _FUNC@0 。一个 FASTCALL 调用的函数被编译 成 @FUNC@0 。顺便提一下,在 WIN32 的编译器里不再需要 PASCALL 调用, VC6 已经取消了对 PASCALL 的支持 . 光看 C 的编译还不够 ,看一下 C++ 编译器是怎么干的。在缺省情况下, 一个 C++ 的函数经过 C++ 编译器后编译出的函数名包括函数名 ,所属的类,参数类型,调 用约定,返回类型。 而且更要命的是这么多的信息,只有函数名和类名在编译后 还依稀可见,其他就是一长串的 ABCD 字母,根本就是无法辨认其意义的。我 们在 VC 手册里可以看到一个例子 : void __stdcall b::c(float); ?c@b@@QAGXM@Z 一个函数被编译得连名字也不知道怎么样了

文档评论(0)

kxg2020 + 关注
实名认证
内容提供者

至若春和景明,波澜不惊,上下天光,一碧万顷,沙鸥翔集,锦鳞游泳,岸芷汀兰,郁郁青青。

1亿VIP精品文档

相关文档