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

news2024/11/20 7:26:11

文章目录

  • 一、占位参数
    • 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.coloradmin.cn/o/971476.html

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

相关文章

JS数组迭代方法实操

数组迭代方法有 1. every() 2.some() 3.foreach() 4.map() 5.filter 逐一操作&#xff0c;并简要区分之。 1 every() every() 方法使用指定的函数测试数组中所有的项&#xff0c;在数组的所有项都满足该条件时&#xff0c;才返回true&#xff0c;否则返回false&#xff1b; …

基于亚马逊云科技打造的游戏AIGC专业版,创梦天地快速上线AI生图服务

生成式人工智能&#xff08;以下简称“生成式AI”&#xff09;的热潮正在全球范围内掀起新一轮的科技革命&#xff0c;释放出巨大的商业价值。各类“AI绘画神器”的涌现&#xff0c;为创意行业带来了翻天覆地的变化。 在游戏领域&#xff0c;生成式AI技术也吸引了玩家们的广泛关…

QT day5

服务器&#xff1a; #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//给服务器指针实例化对象server new QTcpServer(this); }Widget::~Widget() {delete ui…

数学建模之层次分析法

目录 1 模型概述2 模型流程2.1 建立递阶层次结构2.2 构造判断矩阵2.3 一致性检验2.4 计算权重2.4.1 算术平均法2.4.2 几何平均法2.4.3 特征值法 2.5 计算各方案的得分 3 编写代码4 模型局限性 1 模型概述 层次分析法(The analytic hierarchy process, 简称AHP)&#xff0c;是建…

9-AJAX-2综合案例

AJAX-综合案例 目录 案例-图书管理图片上传案例-网站换肤案例-个人信息设置 学习目标 今天主要就是练&#xff0c;巩固 axios 的使用 完成案例-图书管理系统&#xff08;增删改查&#xff09;经典业务掌握图片上传的思路完成案例-网站换肤并实现图片地址缓存完成案例-个人信…

Cyber RT学习笔记 --- 1.Cyber RT框架介绍

1.Cyber RT框架介绍 1.1 Cyber RT简介 Apollo Cyber是首个专为自动驾驶定制的高性能且开源的实时通信框架&#xff0c;于2019年与Apollo 3.5开放平台同期发布&#xff0c;它主要解决了自动驾驶系统的高并发、低延迟、高吞吐、任务调度等问题&#xff0c;同时还提供了多种通信…

Docker 使用

简介 Docker是一个开源的容器引擎&#xff0c;它有助于更快地交付应用。 Docker可将应用程序和基础设施层隔离&#xff0c;并且能将基础设施当作程序一样进行管理。使用 Docker可更快地打包、测试以及部署应用程序&#xff0c;并可以缩短从编写到部署运行代码的周期。 Docker…

Web前端开发概述

Web&#xff08;World Wide Web&#xff0c;全球广域网&#xff09;是指一种基于互联网的信息系统&#xff0c;通过超文本链接将全球各地的文档、图像、视频等资源相互关联起来&#xff0c;并通过Web浏览器进行交互浏览和访问。Web的发展使得人们可以方便地获取和共享各种类型的…

GPT引领前沿与应用突破之GPT4科研实践技术与AI绘图

GPT对于每个科研人员已经成为不可或缺的辅助工具&#xff0c;不同的研究领域和项目具有不同的需求。如在科研编程、绘图领域&#xff1a;1、编程建议和示例代码: 无论你使用的编程语言是Python、R、MATLAB还是其他语言&#xff0c;都可以为你提供相关的代码示例。2、数据可视化…

SpringMVC入门指南

目录 前言 一、什么是SpringMVC 二、MVC架构模式 三、SpringMVC的工作流程 四、SpringMVC核心组件 五、SpringMVC的优势 六、SpringMVC的配置与常用注解 七、SpringMvc请求处理流程、 控制器的编写 、视图的渲染 1.请求处理流程&#xff1a; 2.控制器的编写&#xff1…

Gin学习记录2——路由

路由 一. 常规路由二. 动态路由三. 带参数的路由3.1 GET3.2 POST3.3 绑定 四. 简单的路由组五. 文件分组 一. 常规路由 package mainimport ("net/http""github.com/gin-gonic/gin" )func index(ctx *gin.Context) {ctx.String(http.StatusOK, "Hell…

模板和STL简介

模板和STL简介 一、泛型编程1、通用交换函数的实现&#xff08;1&#xff09;代码&#xff08;2&#xff09;总结 2、泛型编程的概念3、模板的概念 二、函数模板1、概念2、格式3、代码4、原理 三、函数模板实例化1、概念2、隐式实例化&#xff08;1&#xff09;概念&#xff08…

传输层—TCP原理详解

目录 前言 1.TCP协议 2.TCP协议段格式 3.如何解包如何分用 4.网络协议栈和文件的关系 5.如何理解TCP报头 6.TCP的特点 7.TCP字段 7.1 16位窗口大小 7.2标志位 8.超时重传 9.连接管理机制 10.滑动窗口 11.拥塞控制 12.延迟应答 13.捎带应答 14.理解TCP的面向字…

【算法系列篇】分冶-快排

文章目录 前言什么是分冶1.颜色分类1.1 题目要求1.2 做题思路1.3 Java代码实现 2. 排序数组2.1 题目要求2.2 做题思路2.3 Java代码实现 3.数组中的第k个最大元素3.1 题目要求3.2 做题思路3.3 Java代码实现 4. 最小的k个数4.1 题目要求4.2 做题思路4.3 Java代码实现 总结 前言 …

MYSQL调优之思路----sql语句和索引调优

MySQL数据库性能优化包括综合多方面因素&#xff0c;应根据实际的业务情况制定科学、合理的调优方案进行测试调优 文章目录 MySQL性能优化1 优化介绍1.2 优化要考虑的问题2.1 优化可能带来的问题2.2 优化的需求2.3 优化由谁参与2.4 优化的方向2.5 优化的维度 1.2数据库使用优化…

【SpringMVC】工作流程及入门案例

目录 前言 回顾MVC三层架构 1. SpringMVC简介 …

虹科资讯 | LyoPro 作为领先的冻干验证解决方案获得美国和欧洲两项官方专利!

获得美国和欧洲两项官方专利 我们非常高兴地宣布&#xff0c;虹科LyoPro冻干专用温度验证仪已在美国和欧洲获得两项官方专利&#xff0c;巩固了其作为市场上同类解决方案的唯一地位。有关LyoPro温度记录仪的专利分别是 US11340015B2 和 EP3742095B1&#xff0c;前者于2022年5月…

如何实现MongoDB数据的快速迁移?

作为一种Schema Free文档数据库&#xff0c;MongoDB因其灵活的数据模型&#xff0c;支撑业务快速迭代研发&#xff0c;广受开发者欢迎并被广泛使用。在企业使用MongoDB承载应用的过程中&#xff0c;会因为业务上云/跨云/下云/跨机房迁移/跨地域迁移、或数据库版本升级、数据库整…

【Apollo学习笔记】——规划模块TASK之PIECEWISE_JERK_SPEED_OPTIMIZER

文章目录 前言PIECEWISE_JERK_SPEED_OPTIMIZER功能简介PIECEWISE_JERK_SPEED_OPTIMIZER相关配置PIECEWISE_JERK_SPEED_OPTIMIZER流程QP问题的标准类型定义&#xff1a;优化变量设计目标函数约束条件相关矩阵二次项系数矩阵 H H H一次项系数向量 q q q设定OSQP求解参数 Process设…

第二张微服务的调用与注册

文章目录 工程导入利用RestTemplate调用服务需求创建RestTemplate的实例到Spring容器使用RestTemplate发送请求消费者和提供者 Eureka注册中心服务远程调用会出现的问题Eureka的结构和作用Eureka的配置过程搭建注册中心服务注册服务发现 Ribbon负载均衡负载均衡原理源码跟踪总结…