C和C++几点区别
来源:互联网 发布:打开照片的软件 编辑:程序博客网 时间:2024/05/18 22:14
转自:http://www.cnblogs.com/BeyondAnyTime/archive/2012/08/19/2646194.html
区别一:
首先,必须要提及的是我是ACM出身,搞了一年半和教练%¥#¥#%#¥~~~(呵呵,不说了~~),也就是说,我最初接触到的是面向过程的思想,很显然了,我的编程语言那个时候是C语言,后来接触到了C++就开始了面向对象的编程,那个时候我们也编过《图书管理系统》等这些老掉牙的东西。也就是说C语言是面向过程的语言,解决问题的思路是,把问题想象成一个过程,通过过程完成输入到输出的转化。而对于C++语言呢?C++可以说是面向对象的语言,考虑问题的思路是构造一些对象模型,每个对象内部包含有方法和数据,这些对象之间可以传递数据来完成功能的。其实严格的说C++是半面向过程半面向对象的,要不怎么出现了C#呢!!(C++++)关于面向过程和面向对象的问题,我想应该不用多解释的,资料多了去了!!
区别二:
学习C++应该首先接触到class吧,其实在C中也有类似的结构的感念叫struct。在C中的struct是这样要求的只包含数据成员,不允许有成员函数,并且默认数据成员是public类型的,即在外部是可以访问的。那么C++也有struct啊,但是是有区别的,C++中的struct是可以有成员函数,但是C++中的默认也是public的,也就是更接近 class 了。那么C++中为什么要同时又struct和class呢?其实在struct和class基本是一样的,主要有下面的四点区别:(1)class中的成员(数据和函数)默认是private,而在struct中默认是public访问权限。(2)对struct的继承默认是public继承,对class的继承确默认是private继承。(3)和template一起使用的区别,class可以替换typename但是struct不可以。(4)能否用大括号{}初始化。对于struct不提供构造函数的话理论上是可以的,因为数据成员默认是public类型的,而对于class,如果数据成员是private访问权限的则不能,public访问权限则可以利用大括号初始化,对于提供了构造函数的class,理论上也是可以完成初始化的。看看代码吧:
区别三:
学过C++的都知道C++中有个叫做“重载”的词儿,这在C++中是比较重要的,但是在C中是没有的,原因要从C和C++的编译的区别说起了,实际上函数被C++编译和被C编译器编译后在符号库中的名字是不同的,我局个例子就都明白了,比如函数bool IsEquel(int x ,int y),通过C语言编译器编译在符号库中是_IsEquel,而通过C++编译器在符号库中就变成了_IsEquel_int_int 了,现在如果还有一个函数bool IsEquel(float x ,float y),通过C++编译器在符号库中变成了_IsEquel_float_float,看看经过编译之后就变成了不同的函数,也就是重载了,而在C编译器中则不是了,现在可能也应该明白了:为什么要用参数个数或者类型的不同作为重载的条件了吧~~呵呵!!
区别四:
C和C++中的内存申请和释放方式也是不同的,在C中使用的是malloc和free,而在C++更经常使用的是new和delete,现在说说这两个组合的不同之处吧:malloc和free是函数,用来动态的申请和释放内存空间,申请的就是内存空间的大小,比如int *p = (int *)malloc(sizeof(int) *10) .实际上malloc主要是用于内置类型的申请和释放,对于对象的创建用malloc则不能满足要求,因为对象的创建要自动调用构造函数,对象在消亡之前要调用析构函数,用malloc/free是不能完成的,这种情况就要使用new/delete的组合了,应该注意的是new/delete是C++中的运算符。
- C和C++几点区别
- c 在win 下 和在 ubuntu下 细节上的几点区别
- c语言-几点经验
- C语言几点说明
- c#webAPI几点注意
- 《c专家编程》中指针和数组几点说明
- C/C++指针和数组的几点备案
- C 语言 指针和数组的几点笔记:
- 关于C++和C中字符串的几点说明
- 对c 和 c++ 的几点感悟
- 从Objective-C到Swift:几点想法和意见
- 从Objective-C到Swift:几点想法和意见
- C/C++ 点和箭头操作符的区别
- (转载)C/C++ 点和箭头操作符的区别
- 黑马程序员---c 语言 与 c++ 几点区别 (第二章--------第四章)
- 黑马程序员---c 语言 与 c++ 几点区别 (第五章--------第七章)
- [C] const 的几点用法
- [C]const几点注意地方
- Motorola Symbol MC3190开发问题
- 一个求21位花朵数的Java程序
- POI导出EXCEL经典实现
- MVC3换肤
- .net 求百分比
- C和C++几点区别
- java 遍历 map
- 减少函数的副作用
- 七夕夜、离别,涵情经河岸
- org.hibernate.LazyInitializationException: could not initialize proxy 解决
- 数据乱码 多一个为空的一字节乱码
- 读取文件的问题
- 线程的生命周期
- 基本sql连接数据库