C++ --引用与函高级

news2024/7/6 19:35:19

引用

定义:给变量起别名。

语法:数据类型&别名=原名。

int a=10;
int &b=a;
//(此时的a和b都指向了同一块空间,都可对里面的元素进行修改)

 

 对这两个变量名字任意一个进行修改,两变量的结果都会发生变化

 引用注意事项

1.引用必须初始化

int a=10; int &b=a;(必须等于一个变量)

2.引用初始化后,不可以改变(永远指向最初初始化指向的空间),初始化后只能进行赋值操作

int a=10;
int c=20;
int &b=a;
b=c;(将c赋值给b后,b和a的值都为20,但b指向的空间依然和a一样,不发生变化)

 引用的做函数参数

作用:函数传参时,可以利用引用的技术让形参修饰实参

优点:可以简化指针直接修改实参

/1.引用做函数的参数
void sweap(int& a, int& b)//可以当作函数传参的,传进去的是自己本身,在函数中对其进行修改后变量本身也会被修改(类似于地址传参)
{
	int temp = a;
	a = b;
	b = temp;
}

 

 引用做函数的返回值:

2.引用做函数的返回值
int& Add(int a, int b)
{
    static int c = a + b;//静态变量,存放在全局区域
    return c;
}

常量引用

常量引用
void print(const int& val)
{//为了防止引用传参的时候变量在函数中被修改而不影响自己本身,可以加入const。这样变量就不会被修改
    val=20
    cout << "val=" << val << endl;
}

引用的本质:

在c++内部实现一个指针常量。

int a=10;
int &b=a;//int *const b=&a;

若直接赋值给一个常数
const int &b=10;//int temp=10;const int &b=temp;
加入const后变为只读,不可修改。

 函数高级

1.函数的默认参数

在c++中,函数的形参列表中的形参可以有默认参数

语法:返回值类型 函数名(参数=默认值){}

int func(int a, int b = 20)
{
	return a + b;
}

注意事项:

注意:
1.如果某个位置已经有了默认参数,那么从这个位置开始往后,从左到右都必须有默认值
eg:
b有了默认值,后面的所以形参都要有默认值
int test1(int a, int b = 20, int c);
2.如果函数声明有默认参数,函数实现就不能有默认参数
  声明和实现只能有一个有默认参数
int test2(int a = 20, int b = 239);
int test2(int a, int b)
{

}
int fun(int a=10,int b=20)
{
   retutn a+b;
}

int a = 10, b = 29;
	如果自己传入数据就用自己的数据,如果没有那么用默认数据。
	//cout << "a+b=" << func(a,20) << endl;//结果=39
	//cout << "a+b=" << func(a) << endl;//结果=30
	return 0;

 2.函数占位参数

c++中函数形参列表里面可以有占位参数,且传参的时候也当作一个形参,必选满足其形参数量
 占位参数中可以有默认值
void test3(int a, int =20)
{

}

3.函数重载:

作用函数名可以相同,提高复用性
条件:
同一作用域下
函数名称相同
函数参数类型行不通,或者参数个数不同,或者顺序不同

//void func(double a, int b);
//void func(int a, double);
//函数重载的注意事项:
//a.引用作为函数的重载的条件
void func(int &a);//int &a=10; 不合法
//调用:func(a);
void func(const int& a);//const int &a=10; 合法
//调用:func(10);
//b.函数重载碰到默认参数
void func2(int a);
void func2(int a, int b = 10);
//func2(10)//1,2都可以去调用,所以这样调用行不通。
//当函数重载碰到默认参数的时候会出现二义性。
//func2(10,20)//这种情况下可以行得通。

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

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

相关文章

211大学,4个计算机应届生,真实求职情况~

每年6月&#xff0c;毕业就业是一个绕不开的永恒话题&#xff01;2024届秋招即将开始&#xff0c;你们都找到工作了吗&#xff1f;是否还在犹豫、焦虑、没有头绪…… 先知先觉的那一批人&#xff0c;总会未雨绸缪&#xff0c;从前辈那里汲取经验。 播妞采访了4位211计算机应届…

vue+leaflet笔记之地图放大镜

vueleaflet笔记之地图放大镜 文章目录 vueleaflet笔记之地图放大镜开发环境使用教程安装依赖库使用简介 详细源码(Vue3) 本文介绍了Web端使用 Leaflet开发库显示地图放大镜的方法 (底图来源:中科星图)&#xff0c;结合 leaflet.magnifyingglass插件可以为Leaflet图层添加“放…

SHAP显示原始特征

1.问题描述 SHAP用于特征解释&#xff0c;对于机器学习方法往往需要对原始特征进行编码&#xff0c;而SHAP在绘制单个样本时&#xff0c;会显示每个特征及其取值&#xff0c;而这个取值已经是编码后的&#xff0c;通常无法确定其含义。如&#xff1a; 下图所示的拍卖公司、城市…

【软件设计师暴击考点】数据结构高频考点暴击系列

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;软件…

MarkDown语法学习 —— LaTex数学公式 数学符号

文章目录 01 | &#x1f6d1; LaTex公式模式02 | &#x1f6a6;上下标符号 & 数学符号03 | &#x1f6a5; 运算符 LaTeX&#xff0c;作为广义上的计算机标记语言&#xff08;比如HTML&#xff09;&#xff0c;它继承了计算机语言的光荣传统&#xff0c;通过一些简单的代码表…

入门防火墙基本原理

防火墙是可信和不可信网络之间的一道屏障&#xff0c;通常用在LAN和WAN之间。它通常放置在转发路径中&#xff0c;目的是让所有数据包都必须由防火墙检查&#xff0c;然后根据策略来决定是丢弃或允许这些数据包通过。例如&#xff1a; 如上图&#xff0c;LAN有一台主机和一台交…

Nginx基础配置以及实操

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、nginx主配置文件1.全局配置2.I/O事件配置3.HTTP配置4.检查文件是否配置正确5.浏览器测试6.总配置文件图示6.1 nginx总配置文件的三个模块6.2 HTTP文件配置的图示…

通过Python+Selenium获取我的所有文章质量分

文章目录 前言一、背景二、设计三、环境准备四、开发1.查询文章数量1.1请求url1.2响应结果1.3代码 2.获取每页文章列表2.1请求url2.2响应结果 3.获取所有文章url3.1代码 4.保存excle方法4.1代码 5.查询所有文章质量分并写入excle5.1代码 6.程序入口6.1代码 7.需要引入的模块 五…

Copilot是GPT的理想应用模式吗?

自OpenAI发布ChatGPT以来&#xff0c;LLM持续火热&#xff0c;各大公司纷纷入场。但近一段时间以来&#xff0c;我观测到的LLM应用场景&#xff0c;基本都是Copilot的形式&#xff0c;即以对话为基础的辅助应用。尽管体验起来十分的高大上&#xff0c;但我能明确感受到&#xf…

微信小程序发布上线全流程 注册 开发 上传审核

微信小程序接入全流程 微信小程序从零到上线&#xff0c;要经历小程序账号注册开通、完善小程序信息、开发小程序、提交小程序审核及发布四个过程&#xff1a; 以下是微信小程序发布上线的详细流程&#xff1a; 确认小程序信息&#xff1a;在微信公众平台注册并登录后&#…

【C语言进阶】预处理那些事儿

文章目录 &#x1f4d6;预定义符号&#x1f4d6;预处理指令&#x1f4d6;#define &#x1f516;#define定义标识符&#x1f516;#define定义宏&#x1f516;#define替换规则&#x1f516;#和##&#x1f516;带有副作用的宏参数&#x1f516;宏和函数的对比&#x1f516;命名约定…

正点原子 STM32F4/F7水星 开发板资料连载第二十一章LTDC LCD实验

正点原子 STM32F4/F7水星 开发板资料连载第二十一章LTDC LCD实验 - 知乎 (zhihu.com) 本章我们将通过 STM32F767 的 LTDC 接口来驱动 RGBLCD 的显示&#xff0c;另外&#xff0c;STM32F767 的 LTDC 还有DMA2D 图形加速&#xff0c;我们也顺带进行介绍。本节分为三个部分&#…

Kubernetes学习笔记-kubernetes应用扩展(1)-自定义API对象20230622

1、CustomResourceDefinitions介绍 开发者只需要只需向kubernetes api服务器提交CRD对象&#xff0c;即可定义新的资源类型。成功提交CRD之后&#xff0c;就能通过API服务器提交JSON清单或者YAML清单的方式创建自定义资源&#xff0c;以及其他kubernetes资源实例 创建一个CRD…

SpringCloud Alibaba入门6之Nacos配置

一、基本概念 1.命名空间 用于区分环境&#xff0c;开发、测试、生产环境等。 2.配置分组 多个配置文件放在一起&#xff0c;形成组。 3.配置集 一般指一个配置文件 4.配置集ID 这个配置文件全局唯一ID 5.配置项 配置的键值对 二、引入Nacos配置中心 我们在用户模块…

探索安卓内容提供者:构建、访问和管理数据【复习】

文章目录 一 ContentProvider1.1 数据模型- **ContentProvider 使用基于数据库模型的简单表格来提供需要共享的数据**&#xff0c;在该表格中&#xff0c;每一表示一条记录&#xff0c;而每一列代表特定类型和含义的数据&#xff0c;并且其中每一条数据记录都包含一个名为“_ID…

团体程序设计天梯赛-练习集L1篇⑤

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;Hello大家好呀&#xff0c;我是陈童学&#xff0c;一个与你一样正在慢慢前行的普通人。 &#x1f3c0;个人主页&#xff1a;陈童学哦CSDN &#x1f4a1;所属专栏&#xff1a;PTA &#x1f381;希望各…

概率论与数理统计教程第五章节笔记

参考书籍&#xff1a;概率论与数理统计教程第三版 茆诗松 程依明 濮晓龙 编著 文章声明&#xff1a;如有错误还望批评指正 文章目录 ξ 5.1 \xi5.1 ξ5.1总体与样本 ξ 5.2 \xi5.2 ξ5.2样本数据的整理与显示Python绘制直方图Python绘制茎叶图 ξ 5.3 \xi5.3 ξ5.3统计量及其分…

非煤电子封条系统 yolov7

非煤电子封条系统通过yolov7python网络模型技术&#xff0c;非煤电子封条系统利用智能化AI视频分析&#xff0c;实时监测分析矿井出入井人员人数变化、非煤及煤矿生产作业状态等情况&#xff0c;自动生成、推送报警信息&#xff0c;提示相关人员采取应急措施。Python是一种由Gu…

最火的几款STM32 F系列对比

最火的几款STM32 F系列对比 最常用且相对热门STM32F103系列STM32F407系列STM32F429系列STM32F746系列 最常用且相对热门 在STM32F系列中&#xff0c;以下是一些最常用且相对热门的芯片&#xff1a; STM32F103系列&#xff1a;这个系列是STM32F系列中最受欢迎的型号之一。它基于…

二进制安装K8S(单Master集群架构)

目录 一、安装K8S1、单Master集群架构2、操作系统初始化配置3、部署docker引擎4、部署 etcd 集群5、部署 Master 组件6、部署 Worker Node 组件7、部署 CNI 网络组件7.1 部署 flannel7.2 Flannel udp 模式的工作原理&#xff08;必备面试题&#xff09;7.3 Flannel vxlan 模式的…