C语言与C++的比较

一、C++对C语言的扩展

1. 类型增强

(1)类型检查更严格,如无法将const类型的指针赋值给非const类型的指针;

(2)C++中有表示逻辑真假的布尔类型bool,可取值为true和false;

(3)真正的枚举,C++中的枚举变量只能用被枚举出来的元素初始化,C语言中枚举的本质是整型,枚举变量可以用任意整型赋值;

(4)表达式的值可以被赋值,如 (a=b)=10;;

2. 输入cin与输出cout流对象,cin是istream类对象,cout是ostream类对象。

3. 函数重载(静多态),重载底层实现:C++利用name mangling(倾轧)技术来改变函数名,以区分同名函数。

4. 操作符重载,如<<、&、*,C++认为一切操作符都是函数,只有部分操作符不可重载。

5. C++支持函数的默认参数

6. 引用 Reference,变量名本身是一段内存的引用,即别名alias,而引用是为已有变量再起一个别名。

7. new / delete 运算符

C语言中提供了 malloc 和 free 两个系统函数,完成对堆内存的申请和释放;而 C++则提供了两关键字 new 和 delete(也包括 new[] 和 []delete),不需要头文件。

8. 内联函数 inline function,多用于代码行数较少的函数

9. 类型强转 type cast

静态类型转换,static_cast;重解释类型转换,reinterpret_cast;脱常类型转换,const_cast;动态类型转换,dynamic_cast。

10. 命名空间 namespace scope,命名空间为了大型项目开发引入的一种避免命名冲突的一种机制。

二、关于封装

C语言风格封装是使用结构体类型将多个类型打包成一体,形成新的类型。新类型并不包含对数据类的操作,所有的操作都是通过函数的形式。

C++认为C语言的封装不彻底,一是数据与行为分离,二是没有权限控制,三是封装应当实现对内数据开放、逻辑抽象,对外提供接口、屏蔽数据。class封装的本质是将数据与行为绑定在一起然后通过对象来完成操作。

三、C++与C语言的区别

1. C语言是面向过程的;C++是面向对象的。

C语言程序的设计首要考虑的是如何通过一个过程,对输入进行运算处理得到输出。

C++首要考虑的是如何构造一个对象模型,让这个对象能够契合与之对应的问题域,通过获取对象的状态信息得到输出或实现过程事物控制。

2. C语言的结构概念只有成员变量,没有成员方法;C++结构中既有成员变量又有成员函数,且数据成员有权限控制。

3. 头文件

C语言中所有的头文件都带后缀 .h(比如stdio.h)​;C++中有系统提供的头文件不带后缀 .h,用户自己编制的头文件可以有后缀 .h。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值