C和C++的区别

一、思想上的差异

C语言是一门面向过程的语言,面向过程就是解析出问题的解题步骤,将这些步骤一一实现,然后使用时调用即可。其优点是性能比面向对象的语言要高,因为类使用时需要实例化,占用开销较大,比较消耗资源,比如单片机、嵌入式开发、Linux/Uinux等一般采用面向过程开发,性能方面很重要。

而C++呢,是一门面向对象的语言,就是将问题抽象成各个对象,建立对象的目的不是为了完成某一个步骤,而是为了描述某一事物在解决问题步骤中的方法。其优点是易维护、易扩展、易复用。由于面向对象有封装、继承、多态的特性。可以设计出低耦合的系统,使系统更灵活、易维护。

通俗一点,C/C++可以类比成蛋炒饭和盖浇饭。
C语言就好比蛋炒饭,就是将所有材料混合在一起,如果客户需要一份肉炒饭,这时就需要重新准备肉、米、蔬菜。然后重新制作。
C++就好比盖浇饭,将米、蔬菜、肉分开。如果客人需要土豆丝盖饭,只需将米和土豆丝结合就行,如果需要肉丝盖饭,只需将肉丝与米结合。

二、语言上差异

一些关键字方面的区别

  1. struct:C语言中的strutc只允许定义变量,不允许定义函数(方法),而C++可以。
  2. malloc:malloc的返回值是void*,在C语言中可以赋任意指针,而在C++中必须进行强制类型转换。
  3. class:class是对struct的拓展,默认情况下,class中的成员变量为private,struct中的则为public。
    返回值
    C语言如果没有写返回值,那么默认返回值为int
    而C++必须指定返回值,若没有返回值则必须加上void
    参数列表
    C语言中如果没有指定参数列表,那么编译器会默认可以接受多个参数
    C++中如果没有指定参数列表,那么就不会接受任何参数
    函数默认值
    在定义函数时,C++可以在形参中设计一个默认值,以便调用函数形参缺省时使用。但C语言不支持。
    内联函数inline
    C++可以使用inline来修饰函数,与宏类似,但又有区别,inline在编译期间处理,有类型和安全的检查。在函数调用点展开,没有开栈淸栈的开销,速度快。这也是C语言不具备的。
    函数重载
    C语言中产生函数符号的规则是根据名称产生,这也就注定了C语言不存在函数重载的概念。而C++生成符号则考虑了函数名、参数个数、参数类型。属于静多态
    const
    C语言中的const:被修饰后不能做左值,可以不初始化,但是之后没有机会再初始化。不可以当数组的下标,可以通过指针修改。简单来说,它和普通变量的区别只是不能做左值而已。其他地方都是一样的。
    C++中的const:真正的常量。定义的时候必须初始化,可以用作数组的下标。const在C++中的编译规则是替换(和宏很像),所以它被看作是真正的常量。
    作用域
    C语言只有全局作用域、局部作用域
    C++有类作用域、局部作用域、名字空间作用域
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值