C++基础学习笔记

1.命名空间(namespace)

1.什么是命名空间&命名空间的作用

1.在C/C++中,变量、函数、类都是大量存在的,这些变量等的名称将都存在于全局作用域中,就会导致很多的命名冲突等。使用命名空间的目的就是对标识符的名称进行本地化,以避免命名冲突问题,namespace关键字的出现就是针对这种问题出现的。

我们先来看下面这一小段代码:

我们定义的全局变量rand = 10; 但是在我们包的头文件中,存在着同名函数rand,因此就会报错,那么有什么解决办法吗?这个时候就需要用到namespace命名空间了:

1.当我们用namespace 后面加域名 加 { },那么就不会导致命名冲突了,我们成功的输出了10,但请记住,{ }后面不需要加分号" ; ",并且使用对应命名空间的数据时应如上面操作:  kingluo::rand,这里的kingluo即使命名空间对应名字,::对应着kingluo,提醒编译器去哪里找rand。

2.namespace只能定义在全局,并且可以嵌套定义

3.C++标准库都放在一个叫std(standard)的命名空间中。

2.命名空间的使用

编译查找一个变量的声明/定义时,默认只会在局部或者全局域查找,不会到命名空间去查找。因此我们要使用命名空间中定义的变量/函数,有三种方式:

  1. 指定命名空间访问,如上方的kingluo
  2. using将命名空间中的某个成员展开
  3. 展开命名空间中的全部成员

如上方代码,命名空间kingluo中有一个a初始化为20,但我们在main中已经受到提醒,我们可以使用第一种方法即kingluo::a,来打印,也可以将a展开来使用:

此时使用using 命名空间::变量/函数,就可以将其展开,然后我们就可以在全局中使用a了。

也可以将kingluo全部展开:

此时命名空间kingluo中有三个变量,我们使用 using namespace kingluo; 就可以将命名空间kingluo展开,因此我们可以使用变量a,b。但是展开后不能直接使用rand,因为展开后相当于成了全局变量,又引发了命名冲突。而kingluo::rand是可以使用的。

2.缺省参数

1.什么是缺省参数

缺省参数是声明或定义函数时,为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参,缺省参数分为全缺省和半缺省。例如:

我们在定义func函数时,分别给b和c默认参数1和2,没有给a值,那么我们在main函数里面分别调用了三次func函数,分别给了不同的参数,输出的结果自然不一样。也就是说,在定义函数时,如果给了参数默认值,那么在我们调用函数时如果没有指定实参,那么就会按照默认值,例如上面的b和c,而a必须要传一个实参。

  • 全缺省就是全部形参给缺省值,半缺省就是部分形参给缺省值。C++规定半缺省参数必须从右往左依次连续缺省,不能间隔跳跃给缺省值。
  • 带缺省参数的函数调用时,C++规定必须从左到右依次给实参,不能跳跃给实参。
  • 函数声明和定义分离时,缺省参数不能在函数声明和定义中同时出现,规定必须函数声明时给缺省值。

3.函数重载

1.什么是函数重载

C++支持在同一作用域中出现同名函数,但是要求这些同名函数的形参不同,可以是参数个数不同或者类型不同。这样C++函数调用就表现出来多态性为,使用过更加灵活。例如:

1.参数类型不同:

此时我们函数名称相同,但是参数不同,第一个Add函数里面需要两个int,而第二个需要两个double,因此我们传入的参数不同,调用的函数不同,但两个函数的确是同名函数。

2.参数个数不同:

3.参数类型顺序不同:

这就是函数重载的灵活性。

4.引用

1.什么是引用

引用不是新定义了一个变量,而是给已经存在的变量取了一个别名,编译器不会为引用变量开辟内存空间,它和引用的变量共同使用同一块内存空间。

引用的使用方法:类型& 引用别名 = 引用对象; 例如:

b就相当于是a的一个别名,我们都可以通过a,b来改变a。

  • 引用定义时必须初始化。(如上图注释部分int& b;这是不对的,因为引用必须初始化)
  • 一个变量可以拥有多个引用
  • 引用一旦引用一个实体,就不能引用其他实体。

2.const引用

  • 可以引用一个const对象,必须使用const引用。const引用可以引用普通对象,因为对象的访问权限在引用过程中可以缩小,但是不能放大:

这里当a具有常量特性时,我们就不能进行int& r = a;操作,必须给前面加上一个const 才可以。并且下方也使用了const 来修饰rb,因此我们不能通过rb++来修改b,但我们可以通过b来修改b。

  • 注意临时对象和类型转换时引用需要加const常引用:

像上方的 " a+b" 和 "num1,num2类型转换 ",如果不适用const常引用,那么就会出现错误,必须使用常引用才可以。

3.指针和引用的关系

  • 语法概念上引用是一个变量的别名而不开空间,但指针存储一个变量地址,要开空间。
  • 引用必须初始化,而指针语法上可以不初始化,但一般建议指针初始化
  • 引用在初始化引用一个对象后,就不能能再引用其他对象;而指针可以不断地改变指向对象
  • 引用可以直接访问指向对象,而指针需要解引用才可以访问指向对象
  • sizeof的含义不同,引用为引用类型的大小,而指针始终是地址空间所占字节个数(32位下4字节,64位下8字节)
  • 指针很容易出现空指针和野指针问题,引用出现的很少,使用起来相对安全一些。

以上基础知识如有错误,欢迎批评指正!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Nginx七层(应用层)反向代理:UWSGI代理uwsgi_pass篇

Nginx七层(应用层)反向代理 UWSGI代理uwsgi_pass篇 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this a…

JavaSE学习笔记第二弹——对象和多态(下)

今天我们继续复习与JavaSE相关的知识,使用的编译器仍然是IDEA2022,大家伙使用eclipse或其他编译环境是一样的,都可以。 目录 数组 定义 一维数组 ​编辑 二维数组 多维数组 数组的遍历 for循环遍历 ​编辑 foreach遍历 封装、继承和…

网络编程的学习之udp

Udp编程过程 Sento不会阻塞 实现聊天室效果 上线 聊天 下线 服务端需要一个地址,去保留名字和ip地址 交互的时候发结构体 下面这个宏只能在c语言里使用 ser.sin_port htons(50000); 上面是端口号50000以上,两边要一样 这里是不要让udp发的太快&am…

Git命令常规操作

目录 常用操作示意图 文件的状态变化周期 1. 创建文件 2. 修改原有文件 3. 删除原有文件 没有添加到暂存区的数据直接 rm 删除即可: 对于添加到暂存区的数据 文件或目录: 4. 重命名暂存区数据 5. 查看历史记录 6. 还原历史数据 恢复过程的原…

C/C++ list模拟

模拟准备 避免和库冲突&#xff0c;自己定义一个命名空间 namespace yx {template<class T>struct ListNode{ListNode<T>* _next;ListNode<T>* _prev;T _data;};template<class T>class list{typedef ListNode<T> Node;public:private:Node* _…

低代码平台赋能企业全面数字化转型

引言&#xff1a;在当今这个日新月异的数字化时代&#xff0c;企业正面临着前所未有的机遇与挑战。为了保持竞争力并实现可持续发展&#xff0c;企业亟需进行全面的数字化转型。而低代码平台作为数字化转型的重要工具&#xff0c;正以其独特的优势赋能企业&#xff0c;推动其向…

Ollama完整教程:本地LLM管理、WebUI对话、Python/Java客户端API应用

老牛同学在前面有关大模型应用的文章中&#xff0c;多次使用了Ollama来管理和部署本地大模型&#xff08;包括&#xff1a;Qwen2、Llama3、Phi3、Gemma2等&#xff09;&#xff0c;但对Ollama这个非常方便管理本地大模型的软件的介绍却很少。 目前&#xff0c;清华和智谱 AI 联…

[计网初识1] TCP/UDP

学习内容 1.TCP建立链接的3次握手&#xff0c;断开连接的4次挥手 2.TCP报文段组成 内容 1.TCP 建立连接的3次握手? 假设主动方是客户端&#xff0c;被动方是服务端。 第一次 客户端给服务端发送 “hello,我是客户端” (TCP段中 SYN1) 第二次 服务端给客户端发送"我接…

汽车免拆诊断案例 | 2016款保时捷Macan车发动机故障灯异常点亮

故障现象  一辆2016款保时捷Macan车&#xff0c;搭载CYP发动机&#xff0c;累计行驶里程约为11.2万km。车主进厂反映&#xff0c;发动机故障灯异常点亮。 故障诊断  接车后试车&#xff0c;发动机怠速无明显异常&#xff0c;组合仪表上的发动机故障灯异常点亮。用故障检测仪…

AI in Finance 金融领域AI应用-基于DeepNLP AI App Store 真实用户评论打分和排名

AI在金融领域应用 AI in Finance 金融服务领域的AI应用和传统的金融智能应用不同。传统金融智能应用包括如风险评估 (Risk assessment), 风险管理&#xff08;Risk management), 欺诈检测 (Fraud Detection&#xff09;等等。 通用AI大模型和人工智能应用如ChatGPT&#xff0c…

echart5.5.1版本,倒三角柱状图

加载方法 initChart1(title, id, tag) {var myChart echarts5.init(this.$refs[id]);const _this this;var option {title:{text: title||"",show: title?true:false,top: 24,left: 24},grid:{left: 54,top: 74,bottom: 44,right: 30,},xAxis: {type: category,d…

1996-2023年各省农业总产值数据(无缺失)

1996-2023年各省农业总产值数据&#xff08;无缺失&#xff09; 1、时间&#xff1a;1996-2023年 2、来源&#xff1a;国家统计局、各省年鉴 3、指标&#xff1a;农业总产值 4、范围&#xff1a;31省 5、缺失情况&#xff1a;无缺失 6、指标解释&#xff1a;农业总产值是…

CSS关于居中的问题

文章目录 1. 行内和块级元素自身相对父控件居中1.1. 块级元素相对父控件居中1.2. 行内元素相对于父控件居中 2. 实现单行文字垂直居中3. 子绝父相实现子元素的水平垂直居中3.1. 方案一3.1.1. 示例 3.2. 方案二3.2.1. 示例 3.3. 方案三(推荐)3.3.1. 示例 3.4. 方案四(了解一下) …

高盛开源的量化金融 Python 库

GS Quant GS Quant是用于量化金融的Python工具包&#xff0c;建立在世界上最强大的风险转移平台之一之上。旨在加速量化交易策略和风险管理解决方案的开发&#xff0c;凭借25年的全球市场经验精心打造。 它由高盛的定量开发人员&#xff08;定量&#xff09;创建和维护&#…

2970.力扣每日一题7/10 Java(暴力枚举)

博客主页&#xff1a;音符犹如代码系列专栏&#xff1a;算法练习关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 目录 解题思路 解题方法 时间复杂度 空间复杂度 Code 解题思路 incre…

对智能的研究正在悄悄地诱发复杂取代科学

随着智能人工智能的发展&#xff0c;传统科学研究方法可能面临新的挑战或者被扩展。人工智能的发展带来了大数据分析、机器学习、深度学习等新的工具和方法&#xff0c;这些方法在处理复杂系统和大规模数据方面表现出色&#xff0c;使得科学研究变得更加多样化和复杂化。对智能…

stm32 开发板可以拿来做什么?

STM32开发板可以用来做许多不同的事情&#xff0c;具体取决于您的应用需求和编程能力。我收集归类了一份嵌入式学习包&#xff0c;对于新手而言简直不要太棒&#xff0c;里面包括了新手各个时期的学习方向编程教学、问题视频讲解、毕设800套和语言类教学&#xff0c;敲个22就可…

iMazing 3.0.3.1Mac中文破解版下载安装激活

今天&#xff0c;小编要分享的是Mac下一款可以帮助用户管理IOS设备的软件——iMazing&#xff0c;之前&#xff0c;小编也分享的过类似的软件&#xff0c;iMazing却有独特之处。小子这次带来的是3.0.3.1版本。 iMazing 3是一款iOS设备管理软件&#xff0c;该软件支持对基于iOS…

记录一次微信小程序申诉定位权限过程

1 小程序接到通知&#xff0c;检测到违规&#xff0c;需要及时处理&#xff0c;给一周的缓冲时间&#xff0c;如果到期未处理&#xff0c;会封禁能力&#xff08;2023-11-17&#xff09; 2 到期后&#xff0c;仍未处理&#xff0c;封禁能力&#xff08;2023-11-24&#xff09; …

云视频监控中的高效视频转码策略:视频汇聚EasyCVR平台H.265自动转码H.264能力解析

随着科技的快速发展&#xff0c;视频监控技术已经广泛应用于各个领域&#xff0c;如公共安全、商业管理、教育医疗等。与此同时&#xff0c;视频转码技术作为视频处理的关键环节&#xff0c;也在不断提高视频的质量和传输效率。 一、视频监控技术的演进 视频监控技术的发展历…