首页 > 编程语言 >C和C++的区别

C和C++的区别

时间:2022-11-14 13:58:40浏览次数:29  
标签:函数 区别 C++ C语言 面向对象 参数 面向

一、面向过程语言和面向对象语言

C语言是面向过程语言,而C++是面向对象语言

(一)面向过程和面向对象的区别

(1)面向过程:面向过程编程就是分析出解决问题的步骤,然后把这些步骤一步一步的实现,使用的时候一个一个的依次调用就可以了。
(2)面向对象:面向对象编程就是把问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。

(二)面向过程和面向对象的优缺点

面向过程语言:

优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点:没有面向对象易维护、易复用、易扩展

面向对象语言:

优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护
缺点:性能比面向过程低

二、C和C++区别

(一)关键字不同

一些关键字的细微区别:
(1)struct:在C语言中struct定义的变量中不能有函数,而在C++中可以有函数。
(2)malloc :malloc函数的返回值为void*,在C语言中可以赋值给任意类型的指针,在C++中必须强制类型转换,否则报错。
(3)struct和class:class是对struct的扩展,struct默认的访问权限是public,而class默认的访问权限是private。

(二)后缀名不同

C源文件后缀.c,C++源文件后缀.cpp,在VS中,如果在创建源文件时什么都不给,默认是.cpp。

(三)返回值

C语言中,如果一个函数没有指定返回值类型,默认返回int类型;C++中,如果一个函数没有返回值则必须指定为void。

(四)参数列表

在C语言中,函数没有指定参数列表时,默认可以接收任意多个参数;但在C++中,因为严格的参数类型检测,没有参数列表的函数,默认为 void,不接收任何参数。

(五)缺省参数

缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的参j数。(C语言不支持缺省参数)

(六)函数重载

函数重载:函数重载是函数的一种特殊情况,指在同一作用域中,声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数、类型、顺序)必须不同,返回值类型可以相同也可以不同,常用来处理实现功能类似数据类型不同的问题。(C语言没有函数重载,C++支持函数重载)。

标签:函数,区别,C++,C语言,面向对象,参数,面向
From: https://www.cnblogs.com/imreW/p/16888797.html

相关文章

  • C++ 位运算Bitwise operations详解 ----- 重要的解题技巧
    什么是位运算:利用位运算符号进行二进制位计算的操作即为位运算维基百科:......
  • Windows Server 标准版和数据中心版的区别
    背景年底了要做预算采购一些WindowsServer的License,WindowsServer2022的数据中心版和标准版的价格差了6倍。因之前虚拟化平台上的WindowsServer模板用的都是数据中心版,......
  • CSP 202209-1 如此编码 C++
     链接1#include<iostream>2#include<vector>34intmain(){5intx{},m{};6std::cin>>x>>m;7std::vector<std::vector<int>>nc......
  • \r,\n,\r\n的区别
    https://www.cnblogs.com/xiaotiannet/p/3510586.html符号       ASCII码       意义\n              10        换行\r  ......
  • DataTable.ImportRow()与DataTable.Rows.Add()的区别
    https://blog.csdn.net/knqiufan/article/details/81359742今天写代码的时候用到ImportRow()向DataTable中添加记录,代码如下:DataTable dt= datatable;DataRow dr =......
  • C++ explicit关键字详解
    C++编码时,可以通过构造函数将相应的数据类型转换成为C++类的对象,从某种程度来说给编码带来了方便,但并不是每次都正确,为了避免这种情况,C++提供了explicit关键字,相对于implic......
  • OpenGL ES OpenGL WebGL EGL WGL 区别
    目录一.OpenGL二.OpenGLES三.WebGL四.EGL和WGL五.猜你喜欢零基础OpenGLES学习路线推荐:OpenGLES学习目录>>OpenGLES基础零基础OpenGLES学习......
  • 在Windows平台使用Visual C++ 2022编译QT6源码
    在Windows平台使用VisualC++2022编译QT6源码目录在Windows平台使用VisualC++2022编译QT6源码0.引言1.准备工作2.配置3.编译和安装0.引言如果您想......
  • C++PrimerPlus中文第六版第6章编程练习答案
    1、#include<iostream>usingnamespacestd;intmain(){charch;cout<<"Entertext:\n";while(cin.get(ch)&&ch!='@'){if(isa......
  • 软件工程与计算机科学的关系及区别
    我认为它们之间有极大的关联相同:其中前期学习的课程有很多共同科目,其中背后的逻辑与原理几乎是一样的,另外两个专业都比较依赖于经验的积累。区别领域的不同软件工程是......