C++——入门讲解

news2024/10/6 18:22:28

作者:几冬雪来

时间:2023年4月16日

内容:C++入门讲解

目录

前言: 

1.什么是C++:

2.C++关键字:

3.命名冲突:

4.域和::操作符: 

5.std内容讲解: 

6.<<符:

结尾: 


前言: 

在前不久我们结束了数据结构板块的学习,数据结构可以说是我们从C语言到C++的一个过渡阶段。而数据结构篇的完结也意味着我们将踏入新的领域,学习新的知识来提高自己的代码水平,这个模块正是我们的——C++。 

1.什么是C++:

首先还是老规矩的要学习一样东西就需要了解它的由来,那么我们的C++是什么呢?

想知道C++的由来,这里我们就要认识一个人——Bjarne Stroustrup博士他于1982年在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序一样,也就是我们的C++。 

这里我们的C++也兼并着C语言,那么下来我们就来简单的写一写C++的代码来试试看吧。

2.C++关键字:

在这里我们C++的开始就是来解决我们原本C语言中的问题

首先在C++中又新增加了很多的关键字,我们将其意义罗列出来。 

从图标中可以看出除了原本我们C语言所原本拥有的关键字之外,在C++中我们又新增加了60几个关键字,关键字的增加也就引出了我们的一些问题。

首先就是我们命名冲突的问题。 

3.命名冲突:

先来看看我们的这两个代码,在我们C语言的学习我们可以得知上面这种书写方法是可以的,但是一旦我们再加了一个头文件的话,这里我们的代码就会报错。这里报错的原因是因为,加入了这个头文件后我们的变量rand和库相冲突了。 

除了和库里面发生冲突,在出去工作之后由于项目过大,需要分多人来书写,这个时候也有可能造成人和人之间的代码相冲突的情况

4.域和::操作符: 

那么有没有方法来解决我们上面的这种情况呢?那当然是有的,在这里我们引入了新的词语——,来解决我们这个问题。 

那么该怎么解决呢?这里很简单,只需要用域将其隔开即可。 

这里的问题就可以解决了,而这里的namespace又被我们称作——命名空间域。在C++中还存在着不同的域,这里我们的命名空间域就是其中一种,在后面学习C++的过程中我们还会遇到全局域,局部域和类域。 

而谈到域就会联系到我们这里的一个操作符——::。它的学术名则是,域作用限定域,接下来就来看看它是怎么样操作的。

这里我们rand的访问顺序如下:局部域——>全局域。在这里我们并没有将命名空间域给算入在内,这是因为我们的变量并不会主动去命名空间域进行搜索。如果要访问命名空间域中的值,我们有两种方法,一种就展开命名空间域,这里要用到新的关键字——using。另一种则是指定访问命名空间域用到的是——::,并且命名空间域内容的访问顺序是在全局变量之后的。

这里我们就用指定命名空间的方法来访问命名空间域中的数。这里有人就要问了,为什么不用展开命名空间域的方法来访问呢?因为这里使用这种方法的话,有概率会出现问题,我们先将代码给运行起来再进行逐一的分析。 

就像我们这里用的是展开命名空间域的方法,这里我们依旧来访问a的值,可是代码却给我们报了一个错误。这是因为我们展开命名空间域的操作就像将原本域中的值放到全局域中,又因为在我们的全局域中原本就有a这个变量,因此造成了冲突。我们这里命名空间的意义就是防止和别人发生冲突,所以在平时我们不要轻易的去展开命名空间域,这里的展开指的是——编译的时候是否会去命名空间中搜索。 

并且我们的命名空间域实际还可以用于很多的地方:

类似,在命名空间内我们可以定义变量,函数,类型等,我们还可以实现命名空间的嵌套,也就是命名空间里面嵌套一个命名空间。不同的文件的命名空间也可以进行合并的操作。 

同时在这里我们也要了解到一个东西,也就是——std,它是我们C++中的标准库,要经常使用到因为里面包含了许多的东西。 

5.std内容讲解: 

既然我们的std存储了这么多的东西,那么在实际操作写代码中我们又应该怎么使用呢? 

这里我们先写一个代码。

可以看到虽然我们使用了std中的内容,但是这里并不能直接使用,因为我们的这些内容都存储在C++这个标准库中,因此要使用的时候展开它的命名空间域。 

但是这里的展开又分为两种情况。 

第一种方法就是在这里直接对我们的std进行展开,但是这么做有一定的风险。如果我们在函数中不小心用到了C++标准库的来做我们的变量名称,这里的直接对std进行一个展开操作可能就会导致冲突。这里不建议怎么去使用它,因此下面我们就要介绍第二种展开的方式。

这种方法就是将我们常用的进行展开,而不是整个std展开,这样做就可以避免发生冲突的情况了。 

6.<<符:

在上面的代码中我们看见了一段代码中出现了我们所不认识的运算符——<<。整个操作符叫做流插入运算符,那么在这里它是怎么使用的呢?

这里我们先将刚刚的代码运行起来。 

可以看见这里我们成功的打印出来了我们想要的东西,而流插入运算符也就是将它放入某个地方里面。这里的cout和endl则是分别代表了我们打印时候的黑框和换行操作。 

这里我们就证明了endl相当于我们的换行。 

同样的有流插入运算符流提取运算符——>>,这里就简单的写出来。 

并且我们的流插入运算符和流提取运算符都有一大优势,那么是什么优势呢? 

从图中可以看出来,我们的运算符可以做到自动识别我们的类型,这是一种很方便的操作。

结尾: 

到这里,我们就正式进入C++的学习了,C++比起数据结构和我们原本的C语言又是一次难度上和知识上的一大跨越,在学习更难的知识的同时,我们也能学习到更多的东西。最后希望这篇博客能为大家带来帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/416237.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32F4_独立看门狗详解(IWDG)

目录 1. 独立看门狗是什么 2. 独立看门狗 IWDG简介 3. 独立看门狗的主要特性 4. 独立看门狗功能 4.1 独立看门狗功能框图 4.2 IWDG寄存器 4.2.1 关键字寄存器 IWDG_KR 4.2.2 预分频器寄存器 IWDG_PR 4.2.3 重载寄存器 IWDG_RLR 4.2.4 状态寄存器 IWDG_SR 5. 库函数…

OpenCV实战之人脸美颜美型(六)——磨皮

1.需求分析 有个词叫做“肤若凝脂”,直译为皮肤像凝固的油脂,形容皮肤洁白且光润,这是对美女的一种通用评价。实际生活中我们的皮肤多少会有一些毛孔、斑点等表现,在观感上与上述的“光润感”相反,因此磨皮也成为美颜算法中的一项基础且重要的功能。让皮肤变得更加光润,就…

interface陷阱

A1 interface Duck Typing: 当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子&#xff0c;那么这只鸟就可以被称为鸭子 目的: 在 Go 中&#xff0c;Interface&#xff08;接口&#xff09;只是一组方法集合。描述事物的外部行为而非内部结构。 通过接口实现多态的概…

微服务架构——SpringCloud快速入门

认识微服务 随着互联网行业的发展&#xff0c;对服务的要求也越来越高&#xff0c;服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢&#xff1f; 单体架构 将业务的所有功能集中在一个项目中开发&#xff0c;打成一个包部署。 优点&#…

如何保证缓存和数据库的数据一致性

文章目录1、错误的解决方案1.1、 先更新数据库&#xff0c;再删除缓存1.2、 先更新数据库&#xff0c;再更新缓存1.3、 先删除缓存&#xff0c;再更新数据库1.4、 先更新缓存&#xff0c;再更新数据库2、正确的解决方案2.1、使用 CAS2.2、使用分布式锁2.3、使用消息队列异步更新…

字符串匹配—KMP算法

字符串匹配的应用非常广泛&#xff0c;例如在搜索引擎中&#xff0c;我们通过键入一些关键字就可以得到相关的搜索结果&#xff0c;搜索引擎在这个过程中就使用字符串匹配算法&#xff0c;它通过在资源中匹配关键字&#xff0c;最后给出符合条件的搜索结果。并且我们在使用计算…

SpringBoot解决用户重复提交订单(方式三:通过Redis实现-升级版)

文章目录前言1、方案实践1.1、引入Redis依赖1.2、添加Redis环境配置1.3、编写服务验证逻辑&#xff0c;通过 aop 代理方式实现1.4、在相关的业务接口上&#xff0c;增加SubmitLimit注解即可2、小结前言 在上一篇文章中&#xff0c;我们详细的介绍了随着下单流量逐渐上升&#…

【PyTorch】第二节:梯度的求解

作者&#x1f575;️‍♂️&#xff1a;让机器理解语言か 专栏&#x1f387;&#xff1a;PyTorch 描述&#x1f3a8;&#xff1a;PyTorch 是一个基于 Torch 的 Python 开源机器学习库。 寄语&#x1f493;&#xff1a;&#x1f43e;没有白走的路&#xff0c;每一步都算数&#…

python提取多个pdf特定页,并合并为新pdf文件

文章目录1&#xff0c;代码结构2&#xff0c;代码详解2.1&#xff0c;将范围字符串转成list2.2&#xff0c;获取pdf文件特定页2.3&#xff0c;将pdf页list合并为pdf文件并保存2.4&#xff0c;遍历所有要合并的文件&#xff0c;进行合并2.5&#xff0c;给出要合并的pdf文件及范围…

大模型学习

大模型学习计算机视觉方向ViTImage Token EmbeddingMulti-head Self-attentionStable Diffusionstable diffusion支持功能stable diffusion整体结构ClipText如何训练图像信息创建器&#xff08;Image information creator&#xff09;自动编码解码器&#xff08;降噪绘制图形&a…

One Note插件——gem for onenote的安装

文章目录一、前言二、报错原因三、解决方法一、前言 平时写笔记都是用的OneNote来记录&#xff0c;但是Onenote没有 Markdown编辑器 ,写起来很不方便&#xff0c;搜索了解后知道gem for OneNote这个插件&#xff0c;于是下载安装了&#xff0c;但是插件每次都要手动勾选&#…

什么是小程序SDK?安全吗?

前面分享了很多小程序相关的内容&#xff0c;常常提到小程序SDK的概念&#xff0c;但似乎有很多小伙伴不是很理解&#xff0c;今天就来跟大家聊聊小程序SDK。 什么是小程序SDK&#xff1f; 小程序SDK是一种开发工具包&#xff0c;用于开发和构建小程序应用程序。它提供了一系列…

【thingsboard+chirpstack 下行数据通信测试】

这里写目录标题 7. 节点未收到 tb 平台下发数据原因分析7.1 收到的size为07.2 节点收不到数据7.3 可以收到数据的一组例子7.4 节点没收到数据原因分析本文主要描述 tb 下发的数据,节点接收不到原因分析。 主要是数据格式以及解析脚本的对应关系 7. 节点未收到 tb 平台下发数据…

Golang数据类型比较

直接使用比较的情况 分类说明是否能比较说明基本类型整型&#xff08; int/uint/int8/uint8/int16/uint16/int32/uint32/int64/uint64/byte/rune等&#xff09;浮点数&#xff08; float32/float64&#xff09;复数类型&#xff08; complex64/complex128&#xff09;字符串&a…

《Vue3实战》 第一章 nods/npm安装、配置

1、nods.js安装&#xff08;Windows&#xff09; 1.1、下载并安装node https://nodejs.org/en/ , 安装到d盘nodejs目录 1.2、配置环境变量 path配置 1.3、配置全局包存放目录和缓存目录 在根目录下创建node_global&#xff08;全局包存放目录&#xff09;和node_cache&…

关于药物|新药|药品市场调研报告(实操资料分享)

药品市场调研报告是指对药品行业进行详细的市场情况研究和分析。往往伴随着药品市场调研目的地不同&#xff0c;如战略探索、新药开发、投资决策等&#xff0c;报告编辑的内容要点要求也不一样。但总的核心要点内容笔者已提炼&#xff0c;如下&#xff1a; 一、药品市场调研报告…

DeePMD-kit 配置环境备忘

版本 Conda Conda是一个开源的包管理系统和环境管理系统&#xff0c;用于安装多个版本的软件包及其依赖项&#xff0c;并在它们之间轻松切换。它可以在Linux、OS X和Windows上运行&#xff0c;是为Python程序创建的&#xff0c;但可以打包和分发任何软件。 conda enactivatec…

为何ChatGPT如此擅长编造故事?

“幻觉”——人工智能中的一个偏见性术语 AI聊天机器人(如OpenAI的ChatGPT)依赖于一种称为“大型语言模型”(LLM)的人工智能来生成它们的响应。LLM是一种计算机程序&#xff0c;经过数百万文本源的训练&#xff0c;可以阅读并生成“自然语言”文本语言&#xff0c;就像人类自然…

TCP报头结构和TCP协议特性

TCP报头结构 原端口号/目的端口号&#xff1a;表示数据是从哪个进程来&#xff0c;到哪个进程去&#xff1b; 32位序号/32位确认号&#xff1a;这个序号是取的发送方发送所用数据下一个字节的序号&#xff0c;发送方的序列号和接收方的确认号一样&#xff0c;才算接收成功&…

敏捷开发模式下如何用 PingCode 这类工具进行版本发布管理

在软件团队工作中&#xff0c;版本发布要达到好的发布效果&#xff0c;需要在版本发布前做好版本发布的规划&#xff0c;并对发布流程和进度进行管理 准备工作&#xff1a; 您已经创建了一个 PingCode 帐户【快速注册入口】 您创建了一个 PingCode Scrum或 Kanban 项目 您的…