函数的引用/函数的默认参数/函数的占位参数/函数重载

 函数的引用

#include<iostream>
using namespace std;//引用的本质在c++内部实现,是一个指针常量//交换函数
//1.值传递
void mySwap01(int a, int b) {int temp = a;a = b;b = temp;
}//2.地址传递
void mySwap02(int *a, int *b) {int temp = *a;*a = *b;*b = temp;
}
//3.引用传递
void mySwap03(int& a, int& b) {int temp = a;a = b;b = temp;
}//1.不要返回局部变量的引用
int& test01() {int a = 10;//局部变量,存放在栈return a;
}//2.函数的调用可以作为左值
int& test02() {static int a = 10;//存放在全局区,在程序结束后系统释放return a;
}//打印数据函数
void showValue(const int& value) {//value = 1000;  防止这种误操作cout << "value=" << value << endl;
}int main() {int a = 10;//创建引用——起别名——别名的前面加上&——操作的都是同一块内存int& c = a;//引用必须要初始化;引用一旦初始化后,就不可以更改了c = 20;cout << "a=" << a << endl;cout << "------------------" << endl;//引用做函数参数a = 10;int b = 20;mySwap01(a, b);//值传递,形参不会修饰实参cout << "值传递  a=" << a << " b=" << b << endl;//a=10 b=20cout << "------------------" << endl;mySwap02(&a, &b);cout << "地址传递  a=" << a << " b=" << b << endl;cout << "------------------" << endl;mySwap03(a, b);cout << "引用传递  a=" << a << " b=" << b << endl;cout << "------------------" << endl;//引用做函数的返回值int& ref1 = test01();cout << "ref1=" << ref1 << endl;//cout << "ref1=" << ref1 << endl;int& ref2 = test02();cout << "ref2=" << ref2 << endl;cout << "------------------" << endl;//常量引用  const  用来修饰形参防止误操作const int& ref = 10;//引用必须引一块合法的内存空间a = 100;showValue(a);//system("pause");return 0;
}

函数的默认参数

#include<iostream>
using namespace std;//函数的默认参数//如果自己传入数据,就用自己的数据,如果没有就用默认值
//语法:返回值类型 函数名(形参=默认值){}
int func(int a, int b=20, int c=30) {return a + b + c;
}//1.如果一个位置有了默认参数,那么从这个位置开始,从左到右都要有默认值
//2.如果函数声明有默认参数,函数实现就不能有默认参数;是现有声明就别有
int main() {cout << func(10) << endl;//system("pause");return 0;
}

函数的占位参数

#include<iostream>
using namespace std;//占位参数
//返回值类型 函数名 (数据类型){}
//占位参数 还可以有默认参数
void func(int a, int =10) {//int 是占位用的cout << "this is func" << endl;
}
int main() {func(10);return 0;
}

函数重载

#include<iostream>
using namespace std;
//函数重载
//可以让函数名相同,提高复用性/*
函数重载的满足条件
1.同一个作用域下
2.函数名相同
3.参数类型不同,或个数不同,或顺序不同注意:函数的返回值不可以作为函数重载的条件
*/
void func(int a) {cout << "func的调用" << endl;
}void func() {cout << "func的调用!" << endl;
}
int main() {func();func(10);return 0;
}
#include<iostream>
using namespace std;
//函数重载
//可以让函数名相同,提高复用性/*
函数重载的满足条件
1.同一个作用域下
2.函数名相同
3.参数类型不同,或个数不同,或顺序不同注意:函数的返回值不可以作为函数重载的条件
*/void func(int a) {cout << "func的调用" << endl;
}void func() {cout << "func的调用!" << endl;
}//函数重载的注意事项
//1.引用作为重载的条件void fun(int& a) {cout << "fun(int &a)调用" << endl;
}
void fun(const int& a) {cout << "fun(const int &a)调用" << endl;
}int main() {func();func(10);int a = 30;fun(a);//a可变fun(40);//40不可变return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《Electron 学习之旅:从入门到实践》

前言 Electron 简介 Electron 是由 GitHub 开发的一个开源框架&#xff0c;基于 Chromium 和 Node.js。 它允许开发者使用 Web 技术&#xff08;HTML、CSS、JavaScript&#xff09;构建跨平台的桌面应用程序。 Electron 的优势 跨平台&#xff1a;支持 Windows、macOS 和 Linux…

UBuntu24.04-JDK7-TOMCAT7安装

jdk7 apt-get 找不到。 tomcat7 也没找到。 以下是安装成功的&#xff0c;供大家参考。 1.JAVA openjdk-7-jdk /usr/lib/jvm/java-7-openjdk-amd641.安装指定版本apt search jdk //查找版本sudo apt install default-jdk //此为默认版本sudo apt install ope…

美畅物联丨WebRTC 技术详解:构建实时通信的数字桥梁

在互联网技术飞速发展的今天&#xff0c;实时通信已成为数字生活的核心需求。WebRTC作为一个开源项目&#xff0c;凭借卓越的技术实力与创新理念&#xff0c;为网页和移动应用带来了颠覆性的实时通信能力。它突破了传统通信方式的限制&#xff0c;实现了音频、视频和数据在用户…

驾驭 DeepSeek 科技之翼,翱翔现代学习新天际

在当今这个信息爆炸的时代&#xff0c;学习的方式和途径正在经历着前所未有的变革。人工智能技术的飞速发展&#xff0c;为我们的学习带来了全新的机遇和挑战。DeepSeek 作为一款强大的大语言模型&#xff0c;凭借其卓越的性能和丰富的功能&#xff0c;为现代学习注入了新的活力…

写时拷贝技术

目录 写时拷贝 核心思想 基本原理 基本过程 一个例子深入理解 补充知识--引用计数 小总结 写时拷贝实现 宏观理解&#xff08;进程、线程角度&#xff09; 资源共享 只读访问 写操作触发拷贝 独立修改 微观理解&#xff08;fork系统调用角度&#xff09; 进程创…

requests库的request和response对象的属性和方法

Python requests库 request 参数信息 response 参数信息

MySQL数据库操作

目录 SQL语句 1、SQL的背景 2、SQL的概念 SQL的分类 SQL的书写规范 MySQL数据库 1、MySQL数据库的编码 &#xff08;1&#xff09;utf8和utf8mb4的区别 &#xff08;2&#xff09;MySQL的字符集 &#xff08;3&#xff09;MySQL默认编码为 latin1 &#xff0c;如何更改…

Blender-MCP服务源码5-BlenderSocket插件安装

Blender-MCP服务源码5-BlenderSocket插件安装 上一篇讲述了Blender是基于Socket进行本地和远程进行通讯&#xff0c;现在尝试将BlenderSocket插件安装到Blender中进行功能调试 1-核心知识点 将开发的BlenderSocket插件安装到Blender中 2-思路整理 1&#xff09;将SocketServe…

Androidstudio实现一个app引导页(超详细)

文章目录 1. 功能需求2. 代码实现过程1. 创建布局文件2. 创建引导页的Adapter3. 实现引导页Activity4. 创建圆点指示器的Drawable5. 创建“立即体验”按钮的圆角背景 2.效果图 1. 功能需求 1、需要和原型图设计稿对应的元素保持一致的样式。 2、引导页需要隐藏导航栏&#xff…

蓝桥杯省赛真题C++B组-小球反弹

一、题目 有一长方形&#xff0c;长为 343720 单位长度&#xff0c;宽为 233333 单位长度。在其内部左上角顶点有一小球(无视其体积)&#xff0c;其初速度如图所示且保持运动速率不变&#xff0c;分解到长宽两个方向上的速率之比为 dx:dy 15:17。小球碰到长方形的边框时会发生…

基于深度学习的多模态人脸情绪识别研究与实现(视频+图像+语音)

这是一个结合图像和音频的情绪识别系统&#xff0c;从架构、数据准备、模型实现、训练等。包括数据收集、预处理、模型训练、融合方法、部署优化等全流程。确定完整系统的组成部分&#xff1a;数据收集与处理、模型设计与训练、多模态融合、系统集成、部署优化、用户界面等。详…

AI 数字人短视频源码开发:开启虚拟世界的创意引擎

在当今数字化浪潮中&#xff0c;AI 数字人正以惊人的速度融入我们的生活&#xff0c;尤其是在短视频领域&#xff0c;AI 数字人凭借其独特的魅力吸引了无数目光。从虚拟偶像的舞台表演到智能客服的贴心服务&#xff0c;AI 数字人已成为推动短视频行业创新发展的重要力量。而这背…

Java 代理模式:从静态代理到动态代理

前言 代理模式是 Java 中常见的设计模式之一&#xff0c;它的核心思想是通过一个代理对象来控制对真实对象的访问。代理模式不仅可以扩展目标对象的功能&#xff0c;而且在不修改原目标对象的情况下&#xff0c;可以增加一些我们自定义的操作。 1. 代理模式简介 代理模式的核心…

PyCharm 2019.1.3使用python3.9创建虚拟环境setuptools-40.8.0报错处理

目录 前置&#xff1a; 一劳永逸方法&#xff08;缺最后一步&#xff0c;没有成行&#xff09; step one: 下载高版本的pip、setuptools、virtualenv的tar.gz包 step two: 进入PyCharm安装目录的 helpers 目录下 step three: 下载并安装grep和sed命令&#xff0c;然后执行 …

word处理控件Aspose.Words教程:使用 Python 删除 Word 中的空白页

Aspose.Words 是一种高级Word文档处理API&#xff0c;用于执行各种文档管理和操作任务。API支持生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现和打印文档&#xff0c;而无需在跨平台应用程序中直接使用Microsoft Word。 Aspose API支持流行文件格式处理&#xff0c;并…

C++数据结构1——栈结构详解

一、栈的基本概念与特性 1. 栈的定义与特点 栈&#xff08;Stack&#xff09;是一种遵循后进先出&#xff08;LIFO, Last In First Out&#xff09;原则的线性数据结构&#xff0c;其核心特征包括&#xff1a; 单端操作&#xff1a;所有操作仅通过栈顶进行 动态存储&#xf…

77.HarmonyOS NEXT ImageViewerView 组件深度剖析: Swiper容器与懒加载深度解析

温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; HarmonyOS NEXT ImageViewerView 组件深度剖析&#xff1a; Swiper容器与懒加载深度解析 一、组件基础结构 Component export struct ImageViewe…

向量数据库对比以及Chroma操作

一、向量数据库与传统类型数据库 向量数据库&#xff08;Vector Storage Engine&#xff09;与传统类型的数据库如关系型数据库&#xff08;MySQL&#xff09;、文档型数据库&#xff08;MongoDB&#xff09;、键值存储&#xff08;Redis&#xff09;、全文搜索引擎&#xff0…

深入解析对象存储及工作原理

在现代信息技术发展中&#xff0c;存储是一个永恒的话题。从最初的磁带、硬盘到现在的云存储&#xff0c;存储技术不断推陈出新。而其中&#xff0c;“对象存储”作为近年来备受关注的存储技术之一&#xff0c;凭借其高可扩展性和灵活性&#xff0c;逐渐成为企业级存储方案的首…

ctfshow-xxs-316-333-wp

316.反射型 XSS&#xff08;-326都是反射型&#xff09; js恶意代码是存在于某个参数中&#xff0c;通过url后缀进行get传入&#xff0c;当其他用户点进这个被精心构造的url链接时&#xff0c;恶意代码就会被解析&#xff0c;从而盗取用户信息。 来看题&#xff0c;先简单测试…