当前位置: 首页 > news >正文

C++的缺省参数和函数重载

目录

1.缺省参数

1.1缺省参数的概念

1.2缺省参数的分类

1.3缺省参数使用场景

2.函数重载

2.1函数重载的概念

2.2构成函数重载


1.缺省参数

1.1缺省参数的概念

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

void Func(int a = 0)
{cout << a << endl;
}
int main()
{Func();   // 没有传参时,使用参数的默认值Func(10); // 传参时,使用指定的实参return 0;
}

解释:拿上面代码为例,形参a就是缺省参数,当我们给他传参时,a就是我们给的值,如果我们没有传参,它就是默认a为0

1.2缺省参数的分类

1.全缺省

void Func(int a = 10, int b = 20, int c = 30)
{cout << "a = " << a << endl;cout << "b = " << b << endl;cout << "c = " << c << endl;
}
int main()
{Func(1, 2, 3);Func(1, 2);Func(1);Func();return 0;
}

全缺省给参数传值的时候可以全传也可以部分传,可以看上面代码传参的写法 

2.半缺省

注意:半缺省参数是从右往左给的,不能从左往右给(因为从右往左没有歧义)

错误示例:

从左往右会有歧义,假如我们传1,2,我们想把2传给c,那1是给a还是b,就会产生歧义

void Func(int a = 10, int b = 20, int c)
{cout << "a = " << a << endl;cout << "b = " << b << endl;cout << "c = " << c << endl;
}
int main()
{Func(1, 2);return 0;
}

正确示例: 

void Func(int a, int b = 10, int c = 20)
{cout << "a = " << a << endl;cout << "b = " << b << endl;cout << "c = " << c << endl;
}
int main()
{Func(1, 2, 3);Func(1, 2);Func(1);return 0;
}

半缺省给参数传值的时候,缺省的地方可以不给值,但是没有缺省的地方不给值就会报错

1.3缺省参数使用场景

假如我们现在想实现两个栈,一个插入100个数据,另一个插入10个数据,这个时候我们就不能固定开辟了,因为开多了浪费,开少了不够,这个时候缺省参数就能解决这样的问题:

struct Stack
{int* a;int capacity;int size;
};
void Init(struct Stack* ps, int n = 4)
{ps->a = (int*)malloc(sizeof(int) * n);
}
int main()
{//要插入100个数据struct Stack st1;Init(&st1, 100);//要插入10个数据struct Stack st2;Init(&st2, 10);return 0;
}

 注:缺省参数要在声明的时候给,不能在定义的时候给

2.函数重载

2.1函数重载的概念

函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这
些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同,常用来处理实现功能类似数据类型
不同的问题。

2.2构成函数重载

1.参数个数不同

void f()
{cout << "f()" << endl;
}
void f(int a)
{cout << "f(int a)" << endl;
}

2.参数类型不同

int Add(int left, int right)
{cout << "int Add(int left, int right)" << endl;return left + right;
}
double Add(double left, double right)
{cout << "double Add(double left, double right)" << endl;return left + right;
}

3.参数类型顺序不同

void f(int a, char b)
{cout << "f(int a,char b)" << endl;
}
void f(char b, int a)
{cout << "f(char b, int a)" << endl;
}

相关文章:

C++的缺省参数和函数重载

目录 1.缺省参数 1.1缺省参数的概念 1.2缺省参数的分类 1.3缺省参数使用场景 2.函数重载 2.1函数重载的概念 2.2构成函数重载 1.缺省参数 1.1缺省参数的概念 概念&#xff1a;缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时&#xff0c;如果没…...

nginx upstream server主动健康检测模块ngx_http_upstream_check_module 使用和源码分析(上)

目录 1. 缘起2. 配置指令2.1 check2.2 check_keepalive_requests2.3 check_http_send2.4 check_http_expect_alive2.5 check_shm_size2.6 check_status3. 加载健康检测模块3.1 模块的编译3.2 模块的配置4. 测试验证5. 思考与问题6. 源码分析1. 缘起 众所周知,nginx原生的upst…...

第01课:自动驾驶概述

文章目录 1、无人驾驶行业概述什么是无人驾驶智慧出行大趋势无人驾驶能解决什么问题行业趋势无人驾驶的发展历程探索阶段&#xff08;2004年以前&#xff09;发展阶段&#xff08;2004年-2016年&#xff09;成熟阶段&#xff08;2016年以后&#xff09; 2、无人驾驶技术路径无人…...

Docker进阶篇-CIG重量级监控系统

一、简介 通过docker stats命令可以很方便的查看当前宿主机上所有容器的CPU、内存、网络流量等数 据&#xff0c;可以满足一些小型应用。 但是docker stats统计结果只能是当前宿主机的全部容器&#xff0c;数据资料是实时的&#xff0c;没有地方存储、 没有健康指标过线预警…...

鸿蒙踩坑合集

各位网络中的小伙们&#xff0c;关于鸿蒙的踩坑陆陆续续收集中&#xff0c;本文章会持续更新&#xff0c;希望对您有所帮助 1、预览视图无法正常加载 重新编译项目&#xff0c;点击刷新按钮&#xff0c;控制台提示Build task failed. Open the Run window to view details. 解…...

Golang-Map有序输出——使用orderedmap库实现

前言 工作中遇到一个问题&#xff1a;需要导出一个MySQL表格&#xff0c;表格内容由sql查询得来。但现在发现&#xff0c;所导出的表格中&#xff0c;各列的顺序不确定。多次导出&#xff0c; 每一次的序列顺序也是不定的。 因此确定是后端&#xff0c;Map使用相关导致的问题。…...

基础数学问题整理

最近刷了一些关于基础数学问题的题目&#xff0c;大致是关于组合数、分解质因数还有一些思维题&#xff0c;题目来自洛谷的【数学1】基础数学问题 - 题单 - 洛谷&#xff0c;很多思路还是之前没有见过的&#xff0c;都是简单到一般难度的题目&#xff08;橙、题、绿题&#xff…...

【Linux】环境基础开发工具的使用(一)

前言&#xff1a;在此之前我们学习了一些Linux的权限&#xff0c;今天我们进一步学习Linux下开发工具的使用。 &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &#x1f449; 专栏分类:Linux的深度刨析 &#x1f448; &#x1f4af;代码仓库:卫卫周大胖的学习日记…...

突破编程_C++_面试(基础知识(5))

面试题9&#xff1a;什么是内存地址 内存地址是指计算机内存中存储变量或对象的地址。内存空间大小就是寻址能力&#xff0c;即能访问到多少个地址&#xff0c;比如 32 位机器内存空间大小就是 2^32 4294967296&#xff0c;也就是 4 GB 。每个变量或对象在内存中都有一个唯一…...

十分钟掌握Go语言==运算符与reflect.DeepEqual函数处理interface{}值的比较规则

在 Go 语言中&#xff0c;interface{} 类型是一种特殊的接口类型&#xff0c;它表示任意类型的值。你可以使用 运算符来检测任意两个 interface{} 类型值的相等性&#xff0c;比较的规则和一般的接口类型一样&#xff0c;需要满足以下条件&#xff1a; 两个 interface{} 值的…...

Unity3d Shader篇(一)— 顶点漫反射着色器解析

文章目录 前言一、顶点漫反射着色器是什么&#xff1f;1. 顶点漫反射着色器的工作原理 二、编写顶点漫反射着色器1. 定义属性2. 创建 SubShader3. 编写着色器程序段4. 完成顶点着色器5. 完成片段着色器 三、效果四、总结 前言 在 Unity 中&#xff0c;Shader 可以用来实现各种…...

WordPress主题YIA的文章页评论内容为什么没有显示出来?

有些WordPress站长使用YIA主题后&#xff0c;在YIA主题设置的“基本”中没有开启“一键关闭评论功能”&#xff0c;而且文章也是允许评论的&#xff0c;但是评论框却不显示&#xff0c;最关键的是文章原本就有的评论内容也不显示&#xff0c;这是为什么呢&#xff1f; 根据YIA主…...

选择低代码应该注意什么?如何选择?

我查看了几乎所有的介绍低代码的总结和分析报告&#xff0c;几乎都没有把低代码最底层的产品逻辑说清楚。今天我尝试不用复杂的技术名词&#xff0c;也不用代码&#xff0c;把这个事儿给大家说明白&#xff0c;低代码到底怎么回事儿&#xff01;&#xff08;人云亦云那些&#…...

橘子学linux调优之工具包的安装

今天在公司无聊的弄服务器&#xff0c;想着有些常用的工具包安装一下&#xff0c;这里就简单记录一下。 一、sysstat的安装和使用 1、安装 我是通过源码的方式安装的&#xff0c;这样的好处在于可以自由选择你的版本&#xff0c;很直观。 直接去github上找到sysstat的地址&a…...

函数的连续与间断【高数笔记】

【连续】 分类&#xff0c;分几个&#xff1f;每类特点&#xff1f; 连续条件&#xff0c;是同时满足还是只需其一&#xff1f; 【间断】 分类&#xff0c;分几个大类&#xff0c;又分几个小类&#xff1f;每类特点&#xff1f; 间断条件&#xff0c;是同时满足还是只需其一&am…...

游戏如何选择服务器

选择游戏服务器是一个综合性的过程&#xff0c;涉及到的因素包括但不限于游戏类型和规模、硬件配置、网络质量、安全性、服务商的声誉以及地理分布等。以下是一些具体的指导原则&#xff1a; 游戏类型和规模&#xff1a;根据游戏的具体需求来选择合适的服务器。例如&#xff0…...

ubuntu20安装mysql8

1.安装 sudo apt update sudo apt install mysql-server-8.0 -y2.查看运行状态 yantaoubuntu20:~$ sudo systemctl status mysql ● mysql.service - MySQL Community ServerLoaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset:>Active: active …...

07 SB3之@HttpExchange(TBD)

HttpExchange是SpringBoot3的新特性. Spring Boot3 提供了新的 HTTP 的访问能力&#xff0c;封装了Http底层细节. 通过接口简化 HTTP远程访问&#xff0c;类似 Feign 功能。 SpringBoot 中定义接口提供 HTTP 服务 --> 框架生成的代理对象实现此接口 --> 框架生成的代理…...

Redis数据淘汰策略

Redis作为一种高性能的键值存储数据库&#xff0c;通常用于缓存和提高数据检索速度。然而&#xff0c;由于内存资源有限&#xff0c;当内存不足以容纳所有数据时&#xff0c;Redis就需要采取一些策略来删除部分数据&#xff0c;以确保新的数据能够被写入。这就引入了数据淘汰策…...

Git的一些基本操作

初始git 我们给出下面的一个场景&#xff0c;在大学里&#xff0c;一些老师在我们做完实验之后喜欢让我们交实验报告&#xff0c;假设我们有一个比较追求完美的老师和一个勤奋的学生&#xff0c;这个学生叫做小帅&#xff0c;那天小帅桑勤奋的完成实验报告&#xff0c;在第二天…...

open-parse快速入门:5分钟掌握智能文档解析的终极方法

open-parse快速入门&#xff1a;5分钟掌握智能文档解析的终极方法 【免费下载链接】open-parse Improved file parsing for LLM’s 项目地址: https://gitcode.com/gh_mirrors/op/open-parse open-parse是一款专为LLM&#xff08;大语言模型&#xff09;优化的智能文档解…...

如何安全高效地烧录系统镜像?Balena Etcher带来无忧体验

如何安全高效地烧录系统镜像&#xff1f;Balena Etcher带来无忧体验 【免费下载链接】etcher Flash OS images to SD cards & USB drives, safely and easily. 项目地址: https://gitcode.com/GitHub_Trending/et/etcher 你是否曾因误操作将系统镜像写入电脑硬盘而丢…...

5个Adobe-GenP实用技巧:从安装到完美运行Photoshop

5个Adobe-GenP实用技巧&#xff1a;从安装到完美运行Photoshop 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP Adobe-GenP是一款强大的Adobe Creative Cloud通用补丁…...

STM32CubeMX 6.4.0 + STM32F407ZGT6 实战:基于YT8512C PHY的lwIP以太网配置与调试

1. 环境准备与硬件连接 最近在做一个物联网项目时&#xff0c;发现正点原子探索者开发板的PHY芯片从常见的DP83848换成了YT8512C&#xff0c;导致之前能跑通的以太网代码突然失效了。经过一番折腾&#xff0c;终于用STM32CubeMX 6.4.0完成了配置。先说说硬件准备&#xff1a; 开…...

手把手教你用SRIO IP核实现FPGA与DSP间高速数据互传:基于AXI-Stream接口的实战

基于SRIO IP核的FPGA与DSP高速数据互传实战指南 在异构计算系统中&#xff0c;FPGA与DSP的高效协同已成为雷达信号处理、无线通信基带处理等领域的核心技术需求。传统的数据传输方式如SPI、UART等已无法满足现代系统对带宽和实时性的严苛要求&#xff0c;而Serial RapidIO&…...

Verilog握手信号实战:如何用valid/ready搭建高效数据流水线(附完整代码)

Verilog握手信号实战&#xff1a;如何用valid/ready搭建高效数据流水线&#xff08;附完整代码&#xff09; 在FPGA开发中&#xff0c;数据流水线是实现高性能计算的关键架构。但当我们面对不同处理速度的模块时&#xff0c;如何确保数据既不丢失又不阻塞&#xff1f;valid/rea…...

构建专属数字分身:Duix-Avatar本地化部署与应用全指南

构建专属数字分身&#xff1a;Duix-Avatar本地化部署与应用全指南 【免费下载链接】Duix-Avatar 项目地址: https://gitcode.com/GitHub_Trending/he/Duix-Avatar 在数字化时代&#xff0c;拥有一个能够自主生成视频内容的AI助手已成为提升创作效率的关键。Duix-Avatar…...

LVGL下拉列表控件lv_dropdown实战:从基础配置到高级定制(附完整代码示例)

LVGL下拉列表控件lv_dropdown实战&#xff1a;从基础配置到高级定制&#xff08;附完整代码示例&#xff09; 在嵌入式UI开发领域&#xff0c;LVGL&#xff08;Light and Versatile Graphics Library&#xff09;凭借其轻量级和高度可定制的特性&#xff0c;已成为许多开发者的…...

ESP32-IDF开发实战:内置JTAG与OpenOCD高效调试指南

1. 为什么选择ESP32内置JTAG调试&#xff1f; 第一次接触ESP32开发时&#xff0c;你可能会有疑问&#xff1a;市面上这么多调试工具&#xff0c;为什么非要折腾内置JTAG&#xff1f;我刚开始用串口打印调试信息&#xff0c;后来发现这种方法在排查复杂逻辑时效率太低。直到尝试…...

消费级显卡轻松玩转百亿大模型微调?8步教你降维打击,显存成本打骨折!

本文介绍了如何使用QLoRA技术&#xff0c;仅需单张RTX 3090/4090显卡&#xff0c;即可高效微调百亿参数量级的大模型。文章详细阐述了从数据准备、模型加载与量化&#xff08;4-bit NF4&#xff09;、LoRA配置、训练优化&#xff08;混合精度、梯度累积等&#xff09;、模型评估…...