【C++】函数参数扩展 ② ( 占位参数 | 占位参数规则 - 必须为占位参数传入实参 | 默认参数与占位参数结合使用 )

文章目录

  • 一、占位参数
    • 1、占位参数简介
    • 2、占位参数规则 - 必须为占位参数传入实参
  • 二、默认参数与占位参数结合使用
    • 1、结合用法
    • 2、代码示例 - 占位参数与默认参数结合用法


博客总结 :

  • 默认参数 : 在 声明 函数时 , 为 函数参数 定义一个默认值 ;
  • 默认参数规则 : " 默认参数 " 必须 定义在 参数列表 的 末尾 ;
  • 占位参数 : 只声明 参数类型 , 不声明 参数名 ;
  • 占位参数规则 : 占位参数 必须传入 实参值 ;




一、占位参数




1、占位参数简介


占位参数 概念 : 在 C++ 语言中 , " 占位参数 " 是一种特殊的 函数参数 , 用于在 函数 定义时 预留一个 参数位置 , 只声明 参数类型 , 不声明 参数名 ;

无法访问 : 由于 占位参数 没有 参数名称 , 函数 的 函数体 中 , 无法访问 占位参数 ;


占位参数作用 : " 占位参数 " 为以后得函数留下扩展空间 ;


2、占位参数规则 - 必须为占位参数传入实参


函数 占位参数 使用 : 如果为 函数 定义了 " 占位参数 " , 则使用函数时 , 必须为 占位参数 传入实参 , 否则少一个函数会报错 ;


在函数中 , 定义了 2 个普通参数 , 和 1 个占位参数 :

// 为函数设置占位参数
void fun(int num, int num1, int) {cout << "num = " << num << " , num1 = " << num1 << endl;
}

如果调用上述 fun 函数时 , 只传入两个普通参数 , 就会报错 :

    // 传入 2 个参数fun(1, 2);

报错信息如下 :

  • “fun”: 函数不接受 2 个参数
1>------ 已启动生成: 项目: HelloWorld, 配置: Debug Win32 ------
1>Hello.cpp
1>Y:\002_WorkSpace\002_VS\HelloWorld\HelloWorld\Hello.cpp(13,13): error C2660: “fun”: 函数不接受 2 个参数
1>Y:\002_WorkSpace\002_VS\HelloWorld\HelloWorld\Hello.cpp(7,6): message : 参见“fun”的声明
1>已完成生成项目“HelloWorld.vcxproj”的操作 - 失败。
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0==========

错误代码示例 :

// 导入标准 io 流头文件 其中定义了 std 命名空间
#include <iostream>
// 导入 std 命名空间
using namespace std;// 为函数设置占位参数
void fun(int num, int num1, int) {cout << "num = " << num << " , num1 = " << num1 << endl;
}int main() {// 传入 2 个参数fun(1, 2);// 传入 3 个参数fun(1, 2, 3);// 控制台暂停system("pause");return 0;
}

在这里插入图片描述





二、默认参数与占位参数结合使用




1、结合用法


一旦为 函数 定义了 " 占位参数 " , 则使用函数时 , 必须为 占位参数 传入实参 , 否则少一个函数会报错 ;

但是 占位符 并不是我们需要的参数 , 方法体中也无法访问到 ;

平时开发时 , 一直带着一个不需要的参数 , 没有意义 ;

这里就可以将 占位参数 与 默认参数 结合使用 ,


为 函数 最后一个 占位参数 设置 默认只 2 ;

// 为函数设置占位参数
void fun(int num, int num1, int = 2) {cout << "num = " << num << " , num1 = " << num1 << endl;
}

调用上述 fun 函数时 , 既可以传入 2 个参数 , 又可以传入 3 个参数 ;

  • 如果传入 2 个参数 , 则最后一个 占位参数 使用默认值 2 ;
  • 如果传入 3 个参数 , 则最后一个 占位参数 使用传入的值 3 ;
    // 传入 2 个参数fun(1, 2);// 传入 3 个参数fun(1, 2, 3);

不管 是否 传入 占位参数 , 占位参数 在函数体内 , 都不可访问 ;


2、代码示例 - 占位参数与默认参数结合用法


代码示例 :

// 导入标准 io 流头文件 其中定义了 std 命名空间
#include <iostream>
// 导入 std 命名空间
using namespace std;// 为函数设置占位参数
void fun(int num, int num1, int = 2) {cout << "num = " << num << " , num1 = " << num1 << endl;
}int main() {// 传入 2 个参数fun(1, 2);// 传入 3 个参数fun(1, 2, 3);// 控制台暂停system("pause");return 0;
}

执行结果 :

num = 1 , num1 = 2
num = 1 , num1 = 2
请按任意键继续. . .

在这里插入图片描述

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

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

相关文章

时序预测 | MATLAB实现TCN-GRU时间卷积门控循环单元时间序列预测

时序预测 | MATLAB实现TCN-GRU时间卷积门控循环单元时间序列预测 目录 时序预测 | MATLAB实现TCN-GRU时间卷积门控循环单元时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现TCN-GRU时间卷积门控循环单元时间序列预测&#xff1b; 2.运行环…

【工程实践】使用git clone 批量下载huggingface模型文件

前言 经常需要下载模型到服务器&#xff0c;使用git clone方法可以快速实现模型下载。 1.选定要下载的模型 以下载moka-ai/m3e-base为例&#xff0c;切换到Files and versions。 2.更改下载网页的url 如上图所示&#xff0c;当前要下载模型网页的url为&#xff1a; https://hu…

解决:sh: vite: command not found

文章目录 问题描述原因分析解决方案 问题描述 第一次pull项目&#xff0c;运行npm run dev时报错&#xff1a;sh: vite: command not found 原因分析 查看了package.json&#xff0c;发现是有vite的。 没有安装依赖导致的&#xff1b; 解决方案 执行npm i重新安装依赖&#…

SpringMVC使用

文章目录 一.MVC基础概念1.MVC定义2.SpringMVC和MVC的关系 二.SpringMVC的使用1.RequestMapping2.获取参数1.获取单个参数2.传递对象3.后端参数重命名&#xff08;后端参数映射&#xff09;4.获取URL中参数PathVariable5.上传文件RequestPart6.获取Cookie/Session/header 3.返回…

高防服务器面对DDOS攻击的威胁有何必要性

高防服务器面对DDOS攻击的威胁有何必要性&#xff1f;分布式拒绝服务&#xff08;DDoS&#xff09;攻击是一种常见而危险的网络攻击形式&#xff0c;它可以使目标网络服务器过载&#xff0c;导致服务不可用。本文将深入探讨DDoS攻击的威胁&#xff0c;以及高防服务器在抵御这种…

数据可视化工具中的显眼包:奥威BI自带方案上阵

根据经验来看&#xff0c;BI数据可视化分析项目是由BI数据可视化工具和数据分析方案两大部分共同组成&#xff0c;且大多数时候方案都需从零开始&#xff0c;反复调整&#xff0c;会耗费大量时间精力成本。而奥威BI数据可视化工具别具匠心&#xff0c;将17年经验凝聚成标准化、…

算法训练 第一周

一、合并两个有序数组 本题给出了两个整数数组nums1和nums2&#xff0c;这两个数组均是非递减排列&#xff0c;要求我们将这两个数组合并成一个非递减排列的数组。题目中还要求我们把合并完的数组存储在nums1中&#xff0c;并且为了存储两个数组中全部的数据&#xff0c;nums1中…

Linux内核学习(十三)—— 设备与模块(基于Linux 2.6内核)

目录 一、设备类型 二、模块 构建模块 安装模块 载入模块 一、设备类型 在 Linux 以及 Unix 系统中&#xff0c;设备被分为以下三种类型&#xff1a; 块设备&#xff08;blkdev&#xff09;&#xff1a;以块为寻址单位&#xff0c;块的大小随设备的不同而变化&#xff1…

golang channel

channel是不同协程之间异步通信的数据结构。 基本用法 1 构造 ch:make(chan int)//无缓冲 ch:make(chan int,10)//有缓冲2 读操作 val:<-ch <-ch val,ok:<-ch3 写 var data int ch<-data4 关闭 close(ch)5 多路复用 select{ case <-parent.Done():child.…

VLAN间路由:单臂路由与三层交换

文章目录 一、定义二、实现方式单臂路由三层交换 三、单臂路由与三层路由优缺点对比四、常用命令 首先可以看下思维导图&#xff0c;以便更好的理解接下来的内容。 一、定义 VLAN间路由是一种网络配置方法&#xff0c;旨在实现不同虚拟局域网&#xff08;VLAN&#xff09;之…

数学建模--线性规划方法的Python实现

目录 1.算法求解问题 2.算法求解思路 3.算法求解代码 4.算法求解结果 1.算法求解问题 求min z2x13x2x3 s.t:x14x22x3>83x12x2>6x1,x2,x3>02.算法求解思路 关键函数解释如下: #利用linprogl函数来解决def linprog(c, A_ubNone, b_ubNone, A_eqNone, b_eqNone,boundsN…

Python入门教程 - 基本函数(四)

目录 一、什么是函数 二、自定义函数并使用它 一、什么是函数 前面我们学习了像input()、print()、type()等等&#xff0c;他们都是函数。这些其实是由Python内部帮我们定义好的。我们直接用就可以了。 关于函数&#xff0c;除了用内部定义好的&#xff0c;我们也可以自己定…

[Android 四大组件] --- Service

1 service是什么 Service是Android系统中的四大组件之一&#xff0c;它是一种长生命周期的&#xff0c;没有可视化界面&#xff0c;运行于后台的一种服务程序。 2 service分类 3 service启动方式 3.1 startService显示启动 // AndroidManifest.xml<?xml version"1…

Redis-数据结构及常用命令

字符串(String)数据结构常用命令&#xff1a; SET key value&#xff1a;设置指定 key 的值&#xff1b; GET key&#xff1a;获取指定 key 的值&#xff1b; DEL key&#xff1a;删除指定 key&#xff1b; INCR key&#xff1a;将指定 key 的值增加 1&#xff1b; DECR key&a…

【git】git commit、push之前自动执行脚本

可以使用 Git 的钩子&#xff08;hooks&#xff09;功能。Git 钩子是在特定事件发生时执行自定义脚本的方式。 下面是一个使用 pre-commit 钩子的例子&#xff0c;用于在执行 git commit 之前自动执行脚本&#xff1a; 进入你的 Git 仓库的根目录。进入 .git/hooks 目录&…

NPM 常用命令(二)

目录 1、npm bugs 1.1 配置 browser registry 2、npm cache 2.1 概要 2.2 详情 2.3 关于缓存设计的说明 2.4 配置 cache 3、 npm ci 3.1 描述 3.2 配置 install-strategy legacy-bundling global-style omit strict-peer-deps foreground-scripts ignore-s…

【C++入门】string类常用方法(万字详解)

目录 1.STL简介1.1什么是STL1.2STL的版本1.3STL的六大组件1.4STL的缺陷 2.string类的使用2.1C语言中的字符串2.2标准库中的string类2.3string类的常用接口说明 &#xff08;只讲解最常用的接口&#xff09;2.3.1string类对象的常见构造2.3.2 string类对象的容量操作2.3.3string…

Java8实战-总结17

Java8实战-总结17 引入流流操作中间操作终端操作使用流 小结 引入流 流操作 java.util.stream.Stream中的Stream接口定义了许多操作。它们可以分为两大类。再来看一下前面的例子&#xff1a; List<String> names menu.stream() //从菜单获得流 .filter(d -> d.get…

山西电力市场日前价格预测【2023-09-05】

日前价格预测 预测明日&#xff08;2023-09-05&#xff09;山西电力市场全天平均日前电价为262.11元/MWh。其中&#xff0c;最高日前电价为349.80元/MWh&#xff0c;预计出现在19:30。最低日前电价为0.00元/MWh&#xff0c;预计出现在11:45-14:15。 价差方向预测 1&#xff1a…

LeetCode-39-组合总和

题目链接&#xff1a;LeetCode-39-组合总和 解题思路&#xff1a; 先排序&#xff0c;会节省时间&#xff1b;由于数组中的数字可以无限制重复被选&#xff0c;&#xff0c;因此和前几道题的差别是index不需要1&#xff0c;而是可以继续选择当前的元素 代码实现&#xff1a; cl…