20240412,引用,函数高级

老子什么时候能找到一个很爱我还和我一样喜欢看日出日落的对象

一,引用

给变量起别名,数据类型 & 别名=原名;引用一定要初始化,初始化之后不能更改

#include <iostream>
using namespace std;
int main()
{
	int a =10;
	int& b = a;
	//一定要初始化,是不能int&b;
	cout << a << endl;
	cout << b << endl;
	b = 99;
	cout << a << endl;
	cout << b << endl;
	a = 4445;
	cout << a << endl;
	cout << b << endl;
	int c = 20;
	b = c;
	cout << a << endl;
	cout << b << endl;
	cout << c << endl;
	c = 888;
	cout << a << endl;
	cout << b << endl;
	cout << c << endl;

	return 0;
	system("pause");
}
1.1 引用做函数参数——形参会修饰实参
#include <iostream>
using namespace std;
void swap(int& a, int& b)
{
	a += b;
	b = a - b;
	a -= b;
	cout << a << endl;
	cout << b << endl;
}
int main()
{
	int a = 111;
	int b = 666;
	int& aa = a;
	int& bb = b;
	swap(aa, bb);
	cout << a << endl;
	cout << b << endl;

	return 0;
	system("pause");
}
1.2 引用做函数返回值

不要返回局部变量的引用/指针【栈区,会被释放】,函数的调用可以作为左值

#include <iostream>
using namespace std;
int& swap(int& a, int& b)//返回引用,视作返回地址/指针
{
	//static int& c = a + b;非常量应用的初始值必须做左值?
	//int sum = a + b;//静态变量,全局区,程序结束系统释放
	//static int& c = sum;//不对,静态引用什么鬼,哈哈哈哈哈哈哈,地址指向的还是局部变量
	static int sum = a + b;
	int& c = sum;
	return sum;
}
int main()
{
	int a = 111;
	int b = 666;
	int& aa = a;
	int& bb = b;
	int &c =swap(aa, bb);//C是这个函数返回值的引用,且不可更改
	cout << a << endl;
	cout << b << endl;
	cout << endl;

	cout << c << endl;
	cout << c << endl;
	cout << endl;

	swap(aa, bb) = 10000;//左值//给函数赋值->给C赋值
	cout << c << endl;
	cout << c << endl;
	return 0;
	system("pause");
}
1.3 本质——指针常量

乐,记不住专用术语系列。int &a=int *const p,差别就是引用看不到过程

1.4 常量引用

变量传入函数,可以用引用的方式接受

#include <iostream>
using namespace std;
void showvalue(/*const*/ int& val)//防修改
{
	cout << val << endl;
	val = 100;
}
int main()
{
	int a = 10;
	const int& c = 10;//引用必须是一块合法的空间,这里编译器将代码修改为,int temp=10;【一个零时变量?】const int&c=temp
	//c=23;//const了哦

	showvalue(a);//变量传入函数,用引用的方式接受
	cout << a << endl;
	return 0;
	system("pause");
}

二,函数提高

2.1 函数默认参数

返回值类型 函数名 (参数=默认值){语句};形参可以有默认值

#include <iostream>
using namespace std;
int show(int a, int b = 10, int c = 30)
//如果某个位置已经有了默认参数,那么从这个位置往后,从左往右必须都有默认值
{
	return a + b + c;
}
int func(int a, int  b);//声明和函数只要一个有默认参数
int func(int a = 190, int b = 10)
{
	return a + b;
}
int main()
{
	
	cout << show(20)<< endl;
	cout << show(20,20) << endl;//覆盖默认值
	//cout << show(20, ,20) << endl;语法错误
	cout << show(20,20,40) << endl;
	cout << endl;
	cout << func() << endl;
	return 0;
	system("pause");
}
2.2 函数占位参数

返回类型 函数名 (函数类型/INT){ };占位,调用函数时须填补该位置

#include <iostream>
using namespace std;

int func(int a , int )
{
	return a ;
}
int func2(int a, int = 10)//占位参数可以有默认值
{
	return a;
}
//int func1(int a = 190, int)不可以
//{
//	return a;
//}
int main()
{
	//cout << func1(1) << endl;
	//cout << func1(1,10) << endl;
	//都不行
	cout << func(1, 10) << endl;//10拿不到
	cout << func2(1, 10) << endl;
	return 0;
	system("pause");
}
2.3 函数重载

作用:函数名可以相同
条件:同一作用域,函数名称相同,函数参数类型 || 个数 || 顺序 (不同类型)不同  *函数的返回值不可以作为函数重载的条件

#include <iostream>
using namespace std;

void func()
{
	cout << "函数调用" << endl;
}
void func(int a)
{
	cout << "函数调用(int a)" << endl;
}
void func(double b)
{
	cout << "函数调用(double b)" << endl;
}
void func(int a,double b)
{
	cout << "函数调用(int a,double b)" << endl;
}
void func(double b,int a)
{
	cout << "函数调用(double b,int a)" << endl;
}
void func(int a,int b)
{
	cout << "函数调用(int a,int b)" << endl;
}

//void func( int b, int a)
//{
//	cout << "函数调用( int b, int a)" << endl;
//}不行
//int func(int a, int b)
//{
//	cout << "函数调用(int a,int b)" << endl;
//}不行

int main()
{
	func();
	func(10);
	func(2.3);
	func(10, 10);
	func(10, 3.4);
	func(3.4, 10);
	return 0;
	system("pause");
}
2.4 函数重载注意事项

引用作为重载条件:原来值传递就是,真的进行了一次赋值操作,乐,懂了
重载函数遇到默认参数:保证【函数名+参数】只能启动一个函数

#include <iostream>
using namespace std;

void func(int& a)//int& a=10//不合法
{
	cout << "函数调用(int a)" << endl;
}
void func(const int& a)//const int&a=10合法
{
	cout << "函数调用(const int& a)" << endl;
}

//以下都不可以和 void func(int a)一起
//void func(const int a)
//{
//	cout << "函数调用(const int a)" << endl;
//}不行

//void func(int& a)
//{
//	cout << "函数调用(int& a)" << endl;
//}对重载函数的调用不明确?不行

void func2(int a, int b = 10)
{
	cout << "函数调用(int a, int b = 10)" << endl;
}
void func2(int a)
{
	cout << "函数调用(int a)_--2" << endl;
}
int main()
{
	int a = 10;
	func(a);
	func(10);
	const int b = 90;
	func(b);

	func2(10, 20);
	//func2(10);不行
	return 0;
	system("pause");
}

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

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

相关文章

PostgreSQL入门到实战-第二十一弹

PostgreSQL入门到实战 PostgreSQL中表连接操作(五)官网地址PostgreSQL概述PostgreSQL中RIGHT JOIN命令理论PostgreSQL中RIGHT JOIN命令实战更新计划 PostgreSQL中表连接操作(五) 使用PostgreSQL RIGHT JOIN连接两个表&#xff0c;并从右表返回行 官网地址 声明: 由于操作系统…

【前沿模型解析】潜在扩散模型 2-3 | 手撕感知图像压缩 基础块 自注意力块

1 注意力机制回顾 同ResNet一样&#xff0c;注意力机制应该也是神经网络最重要的一部分了。 想象一下你在观看一场电影&#xff0c;但你的朋友在给你发短信。虽然你正在专心观看电影&#xff0c;但当你听到手机响起时&#xff0c;你会停下来查看短信&#xff0c;然后这时候电…

CSS特效---纯CSS实现点击切换按钮

1、演示 2、一切尽在代码中 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"w…

第11版《中国网络安全行业全景图》发布,谁霸榜了软件供应链安全领域?

近日&#xff0c;知名网络安全行业媒体安全牛正式发布了第11版《中国网络安全行业全景图》&#xff08;以下简称”全景图“&#xff09;&#xff0c;共收录了国内网络安全企业454家&#xff0c;细分领域共收录2413项&#xff0c;旨在优先展现当前热门网络安全领域中具有较强市场…

mysql题目1

tj11: ​ select * from t_student where grade 大一 and major 软件工程 ​ tj12: SELECTt_student.name, count(t_choice.cid)FROMt_choiceINNER JOINt_courseON t_choice.cid t_course.idINNER JOINt_studentON t_choice.sid t_student.id GROUP BYt_choice.sid HAVIN…

如何免费搭建幻兽帕鲁服务器?

雨云是一家国内的云计算服务提供商&#xff0c;为了吸引用户推出了积分兑换云产品活动&#xff0c;只需要完成简单积分任务即可获得积分&#xff0c;积分可以兑换免费游戏云、对象存储或者虚拟主机。本文将给大家分享雨云免费游戏云领取及幻兽帕鲁开服教程。 第一步&#xff1a…

字节面试:ThreadLocal内存泄漏,怎么破?什么是 ITL、TTL、FTL?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格&#xff0c;遇到很多很重要的面试题&#xff1a; 1.请解释ThreadLocal是什么&#xff0c;以及它的主要用…

【Nacos】Nacos最新版的安装、配置过程记录和踩坑分享

Nacos是什么&#xff1f;有什么功能&#xff1f;大家可以自行联网&#xff08;推荐 https://cn.bing.com/&#xff09;搜索&#xff0c;这里就不做介绍了。 简单的看了下官网&#xff0c;安装最新版的Nacos&#xff08;v2.3.2&#xff09;需要使用到JDK&#xff08;1.8.0&…

【数据结构】——八大排序(详解+图+代码详解)看完你会有一个全新认识

创作不易&#xff0c;给一个免费的三连吧&#xff1f;&#xff01; 前言 排序在生活中是非常重要的&#xff0c;所以排序在数据结构中也占有很大的地位&#xff0c;相信大家可能被这些排序弄得比较混淆或者对某个排序原理没有弄清&#xff0c;相信看完本篇会对你有所帮助&…

力扣HOT100 - 41. 缺失的第一个正数

解题思路&#xff1a; 原地哈希 就相当于&#xff0c;让每个数字n都回到下标为n-1的家里。 而那些没有回到家里的就成了孤魂野鬼流浪在外&#xff0c;他们要么是根本就没有自己的家&#xff08;数字小于等于0或者大于nums.size()&#xff09;&#xff0c;要么是自己的家被别…

【报错】AttributeError: ‘NoneType‘ object has no attribute ‘pyplot_show‘(已解决)

【报错】AttributeError: ‘NoneType’ object has no attribute ‘pyplot_show’ 问题描述&#xff1a;python可视化出现下面报错 我的原始代码&#xff1a; import matplotlib.pyplot as pltplt.figure() plt.plot(x, y, bo-) plt.axis(equal) plt.xlabel(X) plt.ylabe…

了解何为vue-cli及其作用

Vue CLI是一个由Vue.js官方提供的命令行工具&#xff0c;用于快速搭建基于Vue.js的项目。它可以帮助开发者快速搭建项目结构、配置构建工具、添加插件等&#xff0c;从而更加高效地进行Vue.js项目的开发。 注&#xff1a;在创建工程前需要 先使用命令行&#xff1a;npm instal…

实战项目——智慧社区(三)之 门禁管理

1、人脸识别 实现思路 ①查询出所有的小区信息&#xff0c;下拉列表显示&#xff0c;用于后续判断人脸信息是否与所选小区匹配 ②人脸识别&#xff1a;调用腾讯人脸识别的API接口&#xff0c;首先判断传入图片是否为一张人脸&#xff1b;其次将这张人脸去服务器的人员库进行…

拥有一台阿里云服务器可以做什么?

阿里云ECS云服务器可以用来做什么&#xff1f;云服务器可以用来搭建网站、爬虫、邮件服务器、接口服务器、个人博客、企业官网、数据库应用、大数据计算、AI人工智能、论坛、电子商务、AI、LLM大语言模型、测试环境等&#xff0c;云服务器吧yunfuwuqiba.com整理阿里云服务器可以…

SpringBoot 中的日志原来是这么工作的

在有些场景&#xff0c;能通过调整日志的打印策略来提升我们的系统吞吐量,你知道吗&#xff1f; 我们以Springboot集成Log4j2为例&#xff0c;详细说明Springboot框架下Log4j2是如何工作的&#xff0c;你可能会担心&#xff0c;如果是使用Logback日志框架该怎么办呢&#xff1…

langchain-chatchat指定一个或多个文件回答,不允许回答内容有其他文件内容,即屏蔽其他文件内容

1.找到langchain-chatchat中的knowledge_base_chat.py 2.knowledge_base_chat.py的api内容加上一个flie_name参数&#xff0c;即传过来你需要指定一个文件名称&#xff0c;或多个文件名称&#xff0c;同时也可以不指定&#xff0c;加上以下代码&#xff1a; flie_name: List …

2024-4-10 群讨论:JFR 热点方法采样实现原理

以下来自本人拉的一个关于 Java 技术的讨论群。关注公众号&#xff1a;hashcon&#xff0c;私信拉你 什么是 JFR 热点方法采样&#xff0c;效果是什么样子&#xff1f; 其实对应的就是 jdk.ExecutionSample 和 jdk.NativeMethodSample 事件 这两个事件是用来采样的&#xff0c…

[SystemVerilog]Simulation and Test Benches

Simulation and Test Benches 测试语言中有很大一部分专门用于测试台和测试。在本章中&#xff0c;我们将介绍为硬件设计编写高效测试台的一些常用技术。 6.1 How SystemVerilog Simulator Works 在深入研究如何编写适当的测试台之前&#xff0c;我们需要深入了解模拟器的工作原…

git查看单独某一个文件的历史修改记录

git查看单独某一个文件的历史修改记录 git log -p 文件具体路径 注意&#xff0c;Windows下默认文件路径分隔符是 \&#xff0c;在git bash 里面需要改成 /。 git基于change代码修改与提交_git change-CSDN博客文章浏览阅读361次。git cherry-pick&#xff1a;复制多个提交comm…

使用 Citavi 和 NVivo 简化您的文献综述和研究分析

NVivo 是一款支持定性研究方法和混合研究方法的软件。它可以帮助您收集、整理和分析访谈、焦点小组讨论、问卷调查、音频等内容。NVivo&#xff08;1.0版&#xff09;是Windows和Mac的主要版本。遵循最新的主要版本NVivo 12&#xff08;Windows和Mac&#xff09;。 NVivo 强大…