【C++进阶】引用 函数提高

news2024/10/6 18:30:23

文章目录

      • 一 、引用
        • 1.1 引用的基本使用
        • 1.2 引用的注意事项
        • 1.3 引用做函数参数
        • 1.4 引用的本质 :指针的常量
        • 1.5 常量引用
      • 二、函数提高
        • 1 函数默认参数
        • 2 函数占位参数
        • 3 函数重载

一 、引用

1.1 引用的基本使用

作用:给变量起别名

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

示例:

	int a = 10;
	int & b = a;
	cout <<"b= "<< b << endl;
	b = 20;
	cout << "a = " << a << endl;

'''输出''
    b= 1
    a = 20

1.2 引用的注意事项

  • 引用必须要初识化: 错误写法:int &b;
  • 引用一旦初始化化就不可以更改了,即b是a的别名,就不能是c的别名了

1.3 引用做函数参数

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

优点:简化指针修改实参

using namespace std;
// 交换函数

// 1、值传递
void mySwap01(int a, int b)
{
	int tamp;
	tamp = a;
	a = b;
	b = tamp;
	cout << "mySwap01—a= " << a << endl;
	cout << "mySwap01—b= " << b << endl;
}

//2、地址传递

void mySwap02(int *a, int *b)
{
	int tamp;
	tamp = *a;
	*a = *b;
	*b = tamp;
}

//3、引用传递
void mySwap03(int &bei_a, int &bei_b)
{
	int tamp;
	tamp = bei_a;
	bei_a = bei_b;
	bei_b = tamp;
	cout << "bei_a=" << bei_a << endl;
}
int main()
{
	system("color 1E");
	
	int a = 10;
	int b = 20;
	//mySwap01(a, b); //值传递,形参不会影响实参
	//mySwap02(&a, &b); //地址传递,形参会修改实参的值
	mySwap03(a, b); //引用传递,形参也会修饰实参

	cout << "a= " << a << endl;
	cout << "b= " << b << endl;
	return 0;
}

在这里插入图片描述

1.4 引用的本质 :指针的常量

所有的指针操作都有编译器执行

system("color 1E");
	int a = 10;
	int & ref = a;
	cout << "a = " << a << endl;
	ref = 20;
	cout << "a = " << a << endl;
	cout << "ref = " << ref << endl;

在这里插入图片描述

1.5 常量引用

作用:修饰形参,防止误操作

void showValue(const int &val)
{
	//val = 1000;//在打印的函数修改数据,则原a的值也修改了 
	/*
		在函数上加const,则不能修改	
	*/
	cout << " val = " << val << endl;
}
int main()
{
	system("color 1E");
	//防止误操作
	int a = 10;
	//const:编译器将代码修改临时的值,int temp=10;const int & ref=temp ->const & ref=10;加入const只能读,不能修改
	showValue(a);
	system("pause");	
	return 0;
}

二、函数提高

1 函数默认参数

函数的形参列表的形参是可以有默认值的。

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

注意:

  • 如果某个位置已经有默认参数,那么从这个位置之后,都必须有默认值
  • 如果函数的声明有默认参数,函数的实现就不能有默认参数.实现声明只能有一个默认参数(函数的声明int func(int a=10, int b=20)
//函数的默认参数
//如果我们自己传入数据,就用自己的数据,如果没有,就用默认值
//返回值类型 函数名 (参数=默认值){ }
int func(int a, int b=20, int c=30)
{
	return a + b + c;
}
int main()
{
	system("color 1E");
	cout << "a+b+c = " << func(10,30) << endl;
	system("pause");	
	return 0;
}

2 函数占位参数

作用:形参列表可以有占位参数,用来做占位,调用函数时必须填补该位置

语法:返回值类型 函数名 (数据类型){ } --------》现阶段了解

//函数的占位参数

//返回值类型 函数名 (数据类型){ }
void func(int a ,int)
{
	cout << "this is  func" << endl;
}
int main()
{
	system("color 1E");
	func(10,2);
	system("pause");	
	return 0;
}

3 函数重载

作用:函数名可以相同,提高复用性

函数重载满足条件:

  • 同一作用域下
  • 函数名称相同
  • 函数参数类型不同 或者 个数不同 或者 顺序不同

注意:
函数的返回值类型(void\int)不可以作为函数重载的条件

void func()
{
	cout << "func的调用" << endl;
}
void func(int a)
{
	cout << "func的调用—int" << endl;
}
void func(double a)
{
	cout << "func的调用—double" << endl;
}
int main()
{
	system("color 1E");
	func(0.2);
	func();
	func(2); 
	system("pause");	
	return 0;
}

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

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

相关文章

Python计算目标检测中的IoU

Python计算目标检测中的IoU前言前提条件相关介绍实验环境IoU概念代码实现前言 本文是个人使用PythonPython处理文件的电子笔记&#xff0c;由于水平有限&#xff0c;难免出现错漏&#xff0c;敬请批评改正。更多精彩内容&#xff0c;可点击进入我的个人主页查看 前提条件 熟悉P…

​寒武纪思元370系列与飞桨完成II级兼容性测试,联合赋能AI落地实践

2022年12月2日&#xff0c;寒武纪思元370系列与飞桨已完成II级兼容性测试&#xff0c;兼容性表现良好。 本次II级兼容性测试基于寒武纪MLU370系列&#xff0c;测试了包含PP-YOLO、YOLOv3、ResNet50、DeepLabv3、BERT、OCR-DB等共计15个模型的验证&#xff0c;覆盖了计算机视觉…

01-go基础-07-map(声明map、初始化map、map赋值、遍历map、判断key是否在map中、删除map成员)

文章目录1. 声明 map2. 初始化 map3. map赋值3.1 直接声明并赋值3.2 分别定义每一组键值对4. 遍历map5. 判断key是否在map中6. 删除成员&#xff08;delete()&#xff09;1. 声明 map 语法 var MapName map[keyType]valueType语法示例 var warlords map[string]string仅声明…

Eureka 服务端搭建入门与集群搭建

前言 Eureka在2022年已经确定的是&#xff0c;2.x版本开源计划已经停止了&#xff0c;1.x版本陆陆续续还是有人在维护的。还有很多最早使用微服务的公司还在继续用着eureka作为注册中心&#xff0c;也是很多同学学习微服务的敲门砖。 搭建Eureka服务端 创建一个平平无奇的ma…

2203 CSDN课程-python入门课

Python入门课&#xff0c;较为基础。 1 简介 1.1 前言 事实上&#xff0c;Python已经走过很多年的发展历程了&#xff0c;笔者最一开始学习的时候还是2.x版本&#xff0c;现在早就3.xx版本了。在当提笔&#xff0c;不是青春年少。确实是这样&#xff0c;我记得是2018年开始接…

【Linux从入门到放弃】Linux权限详解

&#x1f9d1;‍&#x1f4bb;作者&#xff1a; 情话0.0 &#x1f4dd;专栏&#xff1a;《Linux从入门到放弃》 &#x1f466;个人简介&#xff1a;一名双非编程菜鸟&#xff0c;在这里分享自己的编程学习笔记&#xff0c;欢迎大家的指正与点赞&#xff0c;谢谢&#xff01; L…

m基于遗传优化的复杂工序调度matlab仿真,输出甘特图和优化收敛图

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 遗传算法 (Genetic Algorithm&#xff0c;GA) 是一种基于规律进化的随机优化搜索算法&#xff0c;该算法最早是由Holland在1975年提出的。遗传算法的主要优势是通过对目标对象进行优化操作&#…

力扣-234-回文链表

回文链表 CategoryDifficultyLikesDislikesalgorithmsEasy (52.70%)1576- TagsCompanies给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff…

FTP文件传输服务

FTP 服务概述2-1 FTP连接及连接模式 控制连接&#xff1a;TCP 21&#xff0c;用于发送FTP命令信息 数据连接&#xff1a;TCP 20&#xff0c;用于上传、下载数据 数据连接的建立类型 主动模式&#xff1a;服务端从 20 端口主动向客户端发起连接 被动模式&#xff1a;服务端在指…

SIM8262E-M2,SIM8262A-M2,SIM8260C-M2,SIM8260C 5G定位模组支持多频段

SIM8262&#xff1a;支持R16标准的5G模组&#xff0c;支持多频段5G NR / LTE-FDD / LTE TDD / HSPA&#xff0c;支持SA和NSA双组网模式&#xff0c;高达 2.4Gbps的数据传输&#xff1b;扩展能力强&#xff0c;接口丰富&#xff0c;包括PCIe、USB3.1、GPIO等。该模块为客户的应用…

Polygon zkEVM中的子约束系统

1. 引言 前序博客有&#xff1a; Polygon zkEVM工具——PIL和CIRCOM Polygon zkEVM中主要设计了3种子约束系统&#xff1a; 1&#xff09;Permutation check子约束系统&#xff1a;PIL中的关键字为is。 2&#xff09;Plookup 子约束系统&#xff1a;PIL中的关键字为in。 …

数据结构——栈,队列,及其结构特点应用。

​✅<1>主页&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;数据结构——栈&#xff0c;队列。 &#x1f525;<3>创作者&#xff1a;我的代码爱吃辣 ☂️<4>开发环境&#xff1a;Visual Studio 2022 &#x1f3e1;<5>系统环境…

路由查找原理

最近在设计Netflow采集系统时&#xff0c;我想要将客户端的公网IP根据IP库转为对应的国家&#xff0c;此外在CACHE机房中&#xff0c;交换机上是没有AS信息的&#xff0c;因此我们也需要根据IP去查路由库&#xff0c;转换出AS信息。 这两个问题的本质是类似的&#xff0c;无论是…

棱镜七彩作为首批成员单位入选工信部网络安全产业发展中心重点实验室!

近日&#xff0c;工信部网络安全产业发展中心公布了网络安全技术与产业发展工信部重点实验室专项工作组成员单位名单。棱镜七彩首批入选&#xff0c;成为信息技术应用创新基础软硬件安全工作组的成员单位&#xff01; 为深入贯彻落实网络强国战略&#xff0c;充分发挥网络安全技…

FOC控制之小A小B小C是如何追求小D的

1、写在前面 随着电动汽车的热火&#xff0c;关于FOC控制技术的文章这几年在网络上可谓是一搜一大把&#xff0c;各种理论分析&#xff0c;公式推导&#xff0c;应有尽有。通过这些文章&#xff0c;可以看出大佬还是很多的。另外也有FOC的开源硬件。而在大几年前&#xff0c;第…

党务管理系统搭建,答题获积分,学习有好礼

党务管理系统搭建是以服务党员群众为目的的&#xff0c;然后通过互联网信息化手段&#xff0c;将党建工作与大数据等新技术融合&#xff0c;实现党建资源答题学习的数字化整合&#xff0c;也提升了党建科学化水平。 党务管理系统搭建助力党建数字化、规范化&#xff1a;利用信息…

快来生成你专属的英文名吧(使用字符级RNN)!

目录 一.前言 二.准备数据 三.构造神经网络 四.训练 五.网络采样&#xff08;预测&#xff09; 一.前言 数据集为18个国家的姓氏&#xff0c;任务是根据训练得到的模型&#xff0c;在给定国家类别和首字母后&#xff0c;能得到一个与该国人名非常相似的一个人名。 > …

openstack基本命令小结

文章目录Openstack0、进入1、查看日志日志位置日志格式举例2、CLI命令格式基本格式使用帮助3、命令文档&#xff08;常用&#xff09;4、基础组件的常用命令1、keystone查询类查看所有组件状态查看所有服务的状态查看域列表查看服务列表查看节点列表查询用户列表查询用户详细信…

用5G制造5G,中国电信打造“滨江模式”,助力电子信息制造产业升级

工业和信息化部近日印发《5G全连接工厂建设指南》&#xff0c;提出“十四五”时期&#xff0c;主要面向原材料、装备、消费品、电子等制造业&#xff0c;采矿、港口、电力等重点行业领域&#xff0c;加快5G全连接工厂建设。中国电信联合中兴通讯打造南京滨江智能工厂&#xff0…

Python第三方库之MedPy

1.MedPy简介 MedPy 是一个图像处理库和针对医学(如高维)图像处理的脚本集合&#xff0c;此处主要讨论利用该库计算常见的医学图像分割任务评价指标&#xff0c;如Dice、Jaccard、Hausdorff Distance、Sensitivity、Specificity、Positive predictive value等。 论文表格的表头…