「C/C++」C语言与C++的区别

news/2024/4/25 0:21:40/

目录

  • 1. 语言起源
  • 2. 编程范式
  • 3. 內置类
  • 4. 函数重载
  • 5. 引用类型
  • 6. 模板
  • 7. 异常处理

1. 语言起源

C语言

最初是由Dennis Ritchie在1970年代开发的,它是一种可移植、高效、底层的编程语言,主要用于系统软件、嵌入式开发、操作系统等领域。

C++语言

于1980年代开始开发,是在C语言基础上发展出来的一种编程语言,兼容C语言,并在其基础上增加了许多新的特性,如面向对象编程、模板、异常处理等。

2. 编程范式

C语言

是一种过程式编程语言,它的优势在于处理简单算法和数字计算,它不支持面向对象编程。

C++语言

支持多种编程范式,包括过程式编程、面向对象编程、元编程等,C++的面向对象编程是C++最重要和独特的特性之一。

3. 內置类

C语言

没有内置的类,只有结构体struct,没有string、vector等数据类型。在C语言中,字符数组用于表示字符串,指针用于实现动态数组和链表等结构。

C++语言

有一些内置的类,这些内置的类是一些常用的数据类型,如string、vector等。string类可以存储和操作字符串,vector类可以存储一组元素,同时支持动态增加和删除元素等操作,这些类可以使C++语言程序的编写更加简单和高效。

4. 函数重载

C语言

不支持函数重载,当需要定义多个名称相同但参数列表不同的函数时,需要给函数不同的名称。

C++语言

允许进行函数重载,即在同一作用域内声明多个名称相同但参数列表不同的函数。函数重载可以提高程序的可读性,并且可以实现更加通用的函数。

5. 引用类型

C语言

只支持指针类型,参数传递和修改参数值需要通过指针来实现。

C++语言

引入了引用类型,引用类型是一种变量别名,可以通过引用来进行参数传递和修改参数值,同时还可以减少指针操作的复杂性和安全隐患。

6. 模板

C语言

没有模板这个功能,当需要编写通用的程序时,必须使用一些宏定义技术来实现。

C++语言

引入了模板,模板是C++语言的基础功能之一,它使得编写通用的数据结构和算法变得更加简单和高效,同时提高程序的可读性和可维护性。

7. 异常处理

C语言

没有异常处理机制,当程序发生错误时,只能通过返回错误代码或者中断程序来处理。

C++语言

引入了异常处理机制,它可以更好地处理程序运行时的错误,让程序更加稳定可靠和不易崩溃。C++异常包括抛出和捕捉,这使得程序能够更加优雅地退出一些不可处理的错误。


http://www.ppmy.cn/news/47068.html

相关文章

我的创作纪念日:Unity CEO表示生成式AI将是Unity近期发展重点,发布神秘影片预告

PICK 未来的AI技术将会让人类迎来下一个生产力变革,这其中也包括生成型AI的突破性革新。各大公司也正在竞相推出AIGC工具,其中微软的Copilot、Adobe的Firefly、Github的chatGPT等引起了人们的关注。然而,游戏开发领域似乎还没有一款真正针对性…

nacos使用

【应用服务注册】 1,引入依赖 spring-cloud-starter-alibaba-nacos-discovery 2,配置服务地址 spring.cloud.nacos.discovery.server-addr:0.0.0.0:8848/ 3,启动类添加注解 EnableDiscoveryClient 4,统一接口返回结构 ResultData …

ubuntu(20.04)-shell脚本(2)echo-date-awk-sed-iptables-shell变量数组

1.echo 语法:echo [-ne][字符串]补充说明: 1、echo会将输入的字符串送往标准输出。 2、输出的字符串间以空白字符隔开,并在最后加上换行号。OPTIONS: -n 不要在最后自动换行 -e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文…

【WebRTC技术专题】更进一步,核心组件RTP/RTCP数据传输协议 (3)

前言介绍 RTP/RTCP协议是流媒体通信的基石。 RTP协议定义流媒体数据在互联网上传输的数据包格式RTCP协议则负责可靠传输、流量控制和拥塞控制等服务质量保证。 在WebRTC项目中,RTP/RTCP模块作为传输模块的一部分 发送端采集到的媒体数据进行进行封包,…

C#FileInfo和File 类

C#中的FileInfo和File类都提供了许多方法和属性来操作文件,但它们的使用方法有所不同。下面是FileInfo和File类常用的方法举例说明: FileInfo类方法: CreateText:创建或打开一个文本文件,并返回一个StreamWriter对象…

MybatisPlus

目录 MybatisPlus入门案例步骤代码实现数据库及表MybatisPlus的Maven坐标配置数据库创建实体类User Mapper接口UserMapper 引导类测试类 简介使用MP做标准数据层开发标准CRUD新增删除修改根据id查询查询所有分页查询步骤1:调用方法传入参数获取返回值步骤2:设置分页拦截器 DQL编…

2023/4/18往日题目总结

搜索路径状态记录 1076. 迷宫问题 - AcWing题库 //以最简单的迷宫问题为例,如何记录走迷宫的路径,其实只需要记录一下状态即可 //也就是记录一下这个点是从哪个点来的,最后从终点开始输出即可(此时输出的是逆序) #in…

flowable流程图绘制工具flowable-ui的安装和使用

一.简介 记录绘制flowable图的过程。 二.下载安装 1.下载 我这边是windows的,下载的版本是6.8.0,zip那个就可以,tar.gz是linux的 下载地址:https://github.com/flowable/flowable-engine/releases/tag/flowable-6.8.0 下载截…

pyecharts从入门到精通-地图专题Map-带时间轴与网格的复杂绘图

文章目录 参考安装与查看pyecharts地图实现-Geo导入依赖生成数据集生成2013-2018年的各个省份GDP数据生成2013-2018年的时间列表生成2013-2018年的总GDP设置visulmap的最大最小值范围 生成2013年的网格组合图提取2013年的数据测试绘制map地图绘制折线图line绘制折线图bar绘制折…

ChatGPT/大模型+零代码,给中小企业带来哪些机会?

ChatGPT让2023年成了AI之年。正如iPhone在2007年开启了智能手机时代,我们现在正在进入人工智能时代。 新形势下,零代码应如何借势发力?伙伴云“AI零代码”给出了答案。 作为零代码领域的头部平台,伙伴云全量发布【AI零代码应用搭…

第四十章 文本渲染总结(未完结)

OpenGL本身没有包含任何的文本处理能力,需要自己定义一套全新的系统让OpenGL绘制文本到屏幕上,但是文本字符没有图元。 可以通过GL_LINES来绘制自行,创建文本的3D网格,或者是将3D环境中字符纹理渲染到2D四边形上。 常用的方法是:将字符纹理绘制到四边形上。 经典文本渲染…

手势控制的机器人手臂

将向你展示如何构建机械手臂并使用手势和计算机视觉来控制它。下面有一个在开发阶段的机械手臂的演示视频。 展示开发中的手臂的演示视频:https://youtu.be/KwiwetZGv0s 如图所示,该过程首先用摄像头捕捉我的手及其标志。通过跟踪特定的界标,…

(7)(7.5) 电机推力比例

文章目录 前言 1 推力曲线 2 推力支架 3 参数计算 前言 Copter 包括电机推力比例,补偿了大多数电调和电机的非线性推力输出。

短轮询、长轮询、SSE 和 WebSocket 间的区别

即时通讯的实现:短轮询、长轮询、SSE 和 WebSocket 间的区别 学习内容: 短轮询:短轮询是一种客户端与服务器之间的通讯方式,客户端定期向服务器发送请求,以检查是否有新消息。如果没有新消息,服务器会返回…

迷宫问题-DFS-BFS

迷宫问题 迷宫问题简介BFS解决迷宫最短路径问题DFS记录迷宫路径DFS解决迷宫所有路径问题 迷宫问题简介 🚀学习过算法程序设计的应该都学习过迷宫这个问题,迷宫问题主要设计的算法就是DFS-深度优先遍历和BFS-广度优先遍历。 🚀在一个二维数组…

gpt4all保姆级使用教程! 不用联网! 本地就能跑的GPT

原文:gpt4all保姆级使用教程! 不用联网! 本地就能跑的GPT 什么是gpt4all gpt4all是在大量干净数据上训练的一个开源聊天机器人的生态系统。它不用科学上网!甚至可以不联网!本地就能用,像这样↓: 如何使用&#xff…

Transactional事务失效场景汇总

文章目录 1、前言2、失效场景2.1、Service没有被Spring管理2.2、事务方法被final、static关键字修饰2.3、同一个类中,方法内部调用2.4、方法的访问权限不是public2.5、数据库的存储引擎不支持事务2.6、Transactional 注解配置错误2.7、使用了错误的事务传播机制2.8、…

【校招VIP】浙大、上海交大、北航等顶级985都参加的大厂校招计划 前两年就业率97%

我们除了互联网的业务外,还有一个比较厉害的小业务,叫稳拿计划。 国内有很多985的学生都报考了大厂的就业班稳拿计划,且过去几届的就业率都达到了97%以上。 只有极少数人,没有找到符合要求的工作。 如果学员没有达到我们规定的…

vue3+ts+pinia+vite一次性全搞懂

vue3tspiniavite项目 一:新建一个vue3ts的项目二:安装一些依赖三:pinia介绍、安装、使用介绍pinia页面使用pinia修改pinia中的值 四:typescript的使用类型初识枚举 一:新建一个vue3ts的项目 前提是所处vue环境为vue3&…

统信UOS + Windows双系统安装教程

全文导读:本文主要介绍了AMD架构下(Intel/amd/兆芯/海光)的机器同时安装Windows系统UOS系统的方法。 准备环境 1、下载好UOS系统镜像(AMD64),下载地址:https://www.chinauos.com/resource/down…