怪物猎人ol3区寻找秘密:c++与c的主要区别在哪里

来源:百度文库 编辑:中科新闻网 时间:2024/04/20 10:41:57
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
一个函数被编译得连名字也不知道怎么样了.这么一来.如果SDK提供的是C++编译器提供了LIB.那么可以说就无法编译任何一个完整的WIN程序.更加不用说什么混合语言编程.

现在,VC编译器提供了个extern语句.当出现extern 'C'语句,括号里的函数将以C方式经过编译器.从而使提供库程序方便那么点.

C语言与C++的区别有很多:
1,全新的程序程序思维,C语言是面向过程的,而C++是面向对象的。
2,C语言有标准的函数库,它们松散的,只是把功能相同的函数放在一个头文件中;而C++对于大多数的函数都是有集成的很紧密,特别是C语言中没有的C++中的API是对Window系统的大多数API有机的组合,是一个集体。但你也可能单独调用API。
3,特别是C++中的图形处理,它和语言的图形有很大的区别。C语言中的图形处理函数基本上是不能用在中C++中的。C语言标准中不包括图形处理。
4,C和C++中都有结构的概念,但是在C语言中结构只有成员变量,而没成员方法,而在C++中结构中,它可以有自己的成员变量和成员函数。但是在C语言中结构的成员是公共的,什么想访问它的都可以访问;而在VC++中它没有加限定符的为私有的。
4,C语言可以写很多方面的程序,但是C++可以写得更多更好,C++可以写基于DOSr程序,写DLL,写控件,写系统。
5,C语言对程序的文件的组织是松散的,几乎是全要程序处理;而c++对文件的组织是以工程,各文件分类明确。
6,C++中的IDE很智能,和VB一样,有的功能可能比VB还强。
7,C++对可以自动生成你想要的程序结构使你可以省了很多时间。有很多可用的工具如加入MFC中的类的时候,加入变量的时候等等。
8,C++中的附加工具也有很多,可以进行系统的分析,可以查看API;可以查看控件。
9,调试功能强大,并且方法多样。

C++是面向对象的!!这个是与C最大的区别呢!!