C和C++区别和联系

C和C++区别和联系

C++在最初的设计初衷要求兼容C语言,所以C++支持支持c的基本语法,C语言是面向过程的程序设计语言,其注重的是数据结构和算法的设计,即给问题然后分析解决问题的思路,通过函数将分析的步骤实现,而C++兼容C语言其也支持这种设计方式,另外C++支持面向对象程序设计,和泛型程序设计风格,面向对象注重的不再是一个一个步骤,而是对象在整个问题处理中的行为,每个对象有自己的属性,和自己处理的方法,这是C和C++最大的区别,即其编程思想的区别。

其余均为一些在语法上的区别

  1. 首先是C89函数内定义需要放在最前面,C++和C的之后版本均可在函数任意位置定义

  2. C的const和C++的const有一定区别,在c语言中使用const修饰后可以通过指针的方式进行改变其值(有的编译器会对其进行优化,看到的是寄存器的值还未发生改变)在c++中const常量不会发生改变(不用volatile关键字)c++编译器会将定义的const认为其不会发生改变,从而将其加入符号表,在程序编译期间将所有的该常量通过这个值进行替换,使得常量的值跟对应的内存空间无关,从而保护了该常量值,就算通过指针改变了内存的值其符号表中的值还是原来的值(如果通过volatile关键字会每次从内存中读取)另外还有C++const修饰的全局变量具有内部链接属性

  3. 还有就是C和C++动态管理内存的方法不一样,C常用的malloc/free函数,而C++除此之外还有new/delete
    其两者区别主要有以下几点
    1、malloc/free是函数,new/delete是C++操作符其可以重载
    2、malloc申请的空间不会初始化,new可以初始化
    3、malloc需要手动计算开辟空间的大小,而new只需要给出类型
    4、malloc执行失败时返回的是空指针,而new是抛出异常
    5、malloc执行成功返回的是void *类型,而new返回的是给定类型
    6、malloc/free对于自定义类型,只会为其分配内存,而new/delete不仅会分配内存还有调用相应的构造函数和析构函数
    7、还有一点是new在获取不到内存是会触发new_handler机制,如果用户设置了相应的处理机制,就会去处理看能否获得内存。

  4. C和C++的函数命名规则不同造就了C++可以使用重载

  5. 还有一些C++有C没有的比如C++的类和C++的泛型编程、命名空间、引用等其他的内容,并且C++提倡使用现代C++编程即不在使用裸指针裸数组等,使用智能指针和STL提供的容器和一些算法,还有C++不提倡使用宏函数,其没有类型检查,应该采用inline或者内联的 lambda 函数来替代,使用const常量替代define定义常量等很多新的特性。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值