当前位置 博文首页 > Miscedencei的博客:C语言与C++这些细节区别你都知道吗?

    Miscedencei的博客:C语言与C++这些细节区别你都知道吗?

    作者:[db:作者] 时间:2021-08-09 10:08

    在学习了C语言和C++之后,这两者之间的区别我们需要仔细的捋一捋!
    一、面向过程语言和面向对象语言
    我们都知道C语言是面向过程语言,而C++是面向对象语言,说C和C++的区别,也就是在比较面向过程和面向对象的区别。
    1.面向过程和面向对象的区别
    (1)面向过程:面向过程编程就是分析出解决问题的步骤,然后把这些步骤一步一步的实现,使用的时候一个一个的依次调用就可以了。
    (2)面向对象:面向对象编程就是把问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。
    2.面向过程和面向对象的优缺点
    在学习一些比较抽象的概念时,由于我们的理解能力很有限,有时候一些比较恰当的例子也是有助于我们学习的,因此对二者的优缺点比较。
    ?面向过程语言
    优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
    缺点:没有面向对象易维护、易复用、易扩展
    ?面向对象语言:
    优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护
    缺点:性能比面向过程低
    二、具体语言的区别
    1.关键字不同
    ?C99有32个关键字
    ?C++98有63个关键字
    一些关键字的细微区别:
    (1)struct:在C语言中struct定义的变量中不能有函数,而在C++中可以有函数。
    (2)malloc :malloc函数的返回值为void*,在C语言中可以赋值给任意类型的指针,在C++中必须强制类型转换,否则报错。
    (3)struct和class:class是对struct的扩展,struct默认的访问权限是public,而class默认的访问权限是private。
    2.后缀名不同
    ?C源文件后缀.c,C++源文件后缀.cpp,在VS中,如果在创建源文件时什么都不给,默认是.cpp。
    3.返回值
    ?C语言中,如果一个函数没有指定返回值类型,默认返回int类型;C++中,如果一个函数没有返回值则必须指定为void。
    在这里插入图片描述
    小编推荐一个学C语言/C++的学习裙【 一零五,三零二,九八六九】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
    4.参数列表
    ?在C语言中,函数没有指定参数列表时,默认可以接收任意多个参数;但在C++中,因为严格的参数类型检测,没有参数列表的函数,默认为 void,不接收任何参数。
    在这里插入图片描述
    5.缺省参数
    ?缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的参。(C语言不支持缺省参数)
    在这里插入图片描述
    (1)半缺省参数
    在这里插入图片描述
    (2)全缺省参数
    在这里插入图片描述
    注意:
    (1)在半缺省的情况下,带缺省值的参数必须放在参数列表的最后面。
    (2)缺省参数不能同时在函数的声明和函数定义中出现,二者只能选其一。
    (3)缺省值必须是常量或者全局变量。
    (4)缺省参数必须通过值参或常参传递。
    6.函数重载
    ?函数重载:函数重载是函数的一种特殊情况,指在同一作用域中,声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数、类型、顺序)必须不同,返回值类型可以相同也可以不同,常用来处理实现功能类似数据类型不同的问题。(C语言没有函数重载,C++支持函数重载)。
    在这里插入图片描述
    来看个例子:
    在这里插入图片描述
    私信小编“资源”有福利哦

    cs