【C++】3. 缺省参数

《C++初阶之路》缺省参数的使用 什么是缺省参数 缺省参数的分类 一些需要注意的地方 阅读详情


一、缺省参数的定义

在c语言中,我们使用一个函数时,必须要传对应的参数,少一个都不可以。难道函数的参数就不能有个默认值吗?于是C++对c做出了改良,创造了缺省参数。

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

例如:a,b叫作缺省参数
在这里插入图片描述


二、缺省参数的使用规则

  1. 缺省值必须是常量或者全局变量

  1. 函数参数可以只缺省一部分,且缺省的顺序必须依次从右往左
    参数全部缺省 叫做 全缺省参数
    参数部分缺省 叫做 半缺省参数(不是指缺省一半)
    在这里插入图片描述

问题:我设置函数Add(int a = 4, int b, int c = 6),传参时 Add(,5,);这种为什么不可以呢?
答:因为语法规定参数传递是依次从左向右(参数传递指的不是参数入栈,参数入栈是从右向左),不能跳着传,至于为什么?你只能去问c++祖师爷本贾尼。


  1. 缺省参数不能在函数声明和定义中同时出现,且需要在函数声明里出现

错误示范
在这里插入图片描述

请问:缺省参数为什么应该出现在声明里呢?
答:缺省参数应该写在函数声明里而不是函数定义里是因为在函数声明中定义默认参数可以让调用者在使用函数时就知道可以传递哪些参数,而不必查看函数定义的细节。此外,函数声明也允许在多个源文件中共享同一个函数原型,这有助于避免重复定义默认参数(chatgot搜到的答案)

我个人的理解如下(不一定正确):
编译器的编译链接过程如下:
在这里插入图片描述
本程序中
在这里插入图片描述
从上可以看出,test.cpp中使用的Add,需要到链接时才能真正使用到Add的真实地址。在没到达链接阶段,Add函数形式就是声明时的形式,所以缺省值放在函数声明里。
正确书写示范:
在这里插入图片描述
那如果声明和定义放在一起呢?(如下,程序报错)但用我刚才的解释又解释不了。
在这里插入图片描述
至于真实的原因是什么?如果你知道,不妨在评论发表你的看法。


C++ | 详细介绍缺省参数的作用 你知道全缺省参数和半缺省参数有何不同吗?为何缺省值要从右往左依次连续给出?本文为你解答这一切 阅读详情

相关推荐

C++基础入门——缺省参数

缺省参数 一般情况下,函数调用时的实参个数应与形参相同,但为了更方便的使用函数,C++也允许定义具有缺省参数的函数,这种函数调用时,实参个数可以与形参不相同。 缺省参数指在定义函数时为形参指定缺省值(默认值)。 这样的函数在调用时,对于缺省参数,可以给出实参值,也可以不给出参数值。如果给出实参,将实参传递给形参进行调用,如果不给出实参,则按缺省值进行调用。 缺省参数的函数调用:缺省实参并不一定是常量表达式,可以是任意表达式,甚至可以通过函数调用给出。如果缺省实参是任意表达式,则函数每次被调用时该表达式被重新

weixin_51025322的博客 1314

C++入门——缺省参数|函数重载

本章讲解了C++的缺省参数,重载函数。

wangjiushun的博客 1616

⚡【C++要笑着学】(3) 缺省参数与函数重载:全缺省与半缺省 | 探讨参数传递的特性 | 缺省参数应用场景 | 理解函数重载 | 构成重载的三种情况 | 不够构成重载的情况

本章我们将讲解缺省参数和函数重载的知识点。我们将深入探讨缺省参数的概念、用法以及各种类型的缺省参数,并研究参数传递的特性以及缺省参数在不同场景下的应用。对于函数重载,我们将从函数重载的概念入手,探讨了构成函数重载的条件。同时,我们将解释为何返回值的不同不能构成函数重载,并讨论可构成重载但可能导致歧义等常见错误。

有道无术, 术尚可求。有术无道, 止于术。 9848

缺省参数 函数重载 引用

缺省参数[全缺 半缺 正常] 函数重载[参数:类型 个数 顺序][与缺省参数共同出现的情况][实现函数重载的原理] 引用[常引用(绑定临时对象的情况)(引用实现与指针类似)]

咸鱼势力登场 928

Xilinx Blockset Counter计数器模块使用及参数配置

本文详细介绍了Simulink中Xilinx Blockset库Counter模块的使用以及参数说明。

白码王子小张的博客 1094

博流BL602开发二 环境搭建与固件烧录实战

本文详细介绍了博流BL602 RISC-V芯片开发环境的搭建与固件烧录全流程。从Linux/WSL系统选择、RISC-V工具链配置、SDK获取,到编译首个Wi-Fi示例并生成固件镜像,再到通过命令行或图形化工具完成烧录及串口测试,提供了完整的实战指南和常见问题解决方案。

weixin_29175469的博客 451

[C++系列] 3. C++缺省参数

对C++中的缺省参数有一个粗浅的理解: 在C++中函数的参数也可以当做备胎....... 1. 缺省参数的概念 缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参。 void Print(int a = 0) { cout << a << endl; } int main() { Prin...

Y-puyu 的博客 535

ST-Link V2的隐藏技能:多通道串口调试的终极指南

本文深入探讨了ST-Link V2的多通道串口调试功能,突破传统烧录工具的限制。通过详细的硬件配置、Arduino IDE设置和实战案例,展示了如何利用SWD接口实现多通道数据监控,提升STM32F103C8T6等开发板的调试效率。文章还提供了PCB布局优化和性能调优技巧,助力开发者充分发挥ST-Link V2的潜能。

weixin_29285605的博客 355

【C++趣味教程】(3) 缺省参数:全缺省参数 | 参数传递特性 | 半缺省参数 | 缺省参数的应用场景

缺省参数 (Default Args) ,名字翻译的是非常难以理解,正经得不得了。

有道无术, 术尚可求。有术无道, 止于术。 1144

【VSCode】【Clangd】从零构建:基于LLVM/Clangd+MINGW+CMake的Windows高性能C/C++开发环境实战

本文详细介绍了如何在Windows平台搭建基于LLVM/Clangd+MINGW+CMake的高性能C/C++开发环境。通过VSCode配置Clangd语言服务器,结合MINGW提供的GCC工具链和CMake的跨平台构建能力,实现轻量级、高效率的开发体验。文章包含从环境准备到实战配置的完整指南,特别适合追求开发效率和跨平台兼容性的开发者。

weixin_28839629的博客 311

【银行测试】手机银行APP专项项目+测试点汇总(一)

1、手机银行APP转账项目讲解面试官:请介绍一下你所负责的模块如何进行的测试?求职者:好的,我最近测试的是XX银行的手机银行App项目。这个项目里面包含了转账、转账额度调整、网银转账、交易明细、添加账户、存款、投资理财、生活缴费等功能模块。我主要负责了转账模块,这个大模块中包含了智能转账、手机转账、语音转账、预约转账、收款人管理等5个子模块,我首先介绍一下我们生活中使用最多的手机转账子模块。对于转账需要关注的是转账前、转账中、转账后这三个状态下的测试。

m0_70102063的博客 1604

CD3.【C++ Dev】头文件、缺省参数

下面的代码的函数的写法是错误的,没有遵守缺省参数的规则//......VS上的报错显示: error C2548: “function”: 缺少形参 3 的默认实参例如:function(1),这个1给a还是给c的呢?有歧义,不允许这样写!改成下面这样就行了//......结论:从右往左缺省,为了防止歧义,即所有有默认值的参数必须位于参数列表的末尾。

zhangcoder的博客 记录学习轨迹~ 1279

Android BSP 开发深度解析:驱动开发、系统定制与调试实战

本文系统介绍了Android BSP开发的核心技术要点,重点探讨了外设驱动开发与调试方法。文章首先解析了Android系统分层架构和BSP的关键作用,详细阐述了Linux内核驱动开发基础,包括字符设备、平台设备和输入子系统驱动的实现方法。随后针对触摸屏、WIFI、蓝牙、USB、摄像头和屏幕等常见外设,深入分析了驱动开发要点和调试技巧。此外,还梳理了Android系统启动流程,介绍了常用调试工具和方法论,并提供了面试常见问题及参考答案。全文内容全面实用,为Android底层开发人员提供了系统的技术指南。

郑伟强dev的专栏 288

【C++学习笔记】1.3 缺省参数

缺省参数一共有两种类型:全缺省参数、半缺省参数;它的本质就是当不传参数进入函数时,就用函数定义时所设置的默认参数。

kikokingの比特宇宙 962

国科大学习资料--计算机网络--历年考题1

国科大学习资料–计算机网络–历年考题1 1、假定有一个通信协议,每个分组都引入100字节的开销用于头和成帧,现在使用这个协议发送1M字节的数据(为方便计算,1M=10^6),然而在传递的过程中有一个字节被破坏了,因而包含该字节的那个分组被丢弃并重传。(1)当数据的分组大小为1000、5000、20000和40000字节时,计算相应(包括开销)的传递字节总数目。(2)计算分组大小的最优值是多少,即分组的大小为何值时总的传输字节数最少。(提示:最优值不是1000、5000、20000和40000字节中的一个)

无名何许人的博客 1181

论文阅读:ICLR 2026 Breaking and Fixing Defenses Against Control-Flow Hijacking in Multi-Agent Systems

该论文首先系统阐述了控制流劫持攻击的核心机理。此类攻击通过操纵多智能体系统的编排机制,诱导系统执行非安全操作,进而实现敏感信息窃取。攻击者将恶意指令伪装成环境错误信息,借助可信代理传递至系统编排器,利用"困惑副手"漏洞绕过传统安全防线。该论文指出,现有防御方案如LlamaFirewall所依赖的对齐检查机制存在根本性局限——安全目标与功能需求之间存在不可调和的内在冲突。该论文的核心贡献体现在攻防两个维度。

CSPhD-winston的博客 493

C++_1:缺省参数(2/3)

闲话少叙,咱们这章来说说缺省参数。

2301_80682565的博客 1080

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

C++入门(3)inline函数与缺省参数

缺省参数可以有多个,但所有的缺省参数必须放在参数表右侧,即先定义所有的非缺省参数,再定义缺省参数。一般情况下,函数调用时的实参个数与形参相同,但为了更方便地 使用函数,C++也允许定义具有缺省参数的函数,这种函数调用时,实参个数可以与形参不相同。当函数功能简单,使用频率很高,为了提高效率,直接将函数的代码镶嵌到程序中。这样的函数在调用时,对于缺省参数,可以给出实参值,也可以不给出参数值。当程序执行函数调用时,系统要建立栈空间,保护现场,传递参数以及控制程序执行的转移等等,这些工作需要系统时间和空间的开销。

2302_80090192的博客 660

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【走进C++ (3)】缺省参数 & 函数重载 & 引用

本文介绍了C++中的缺省参数、函数重载以及引用三个重要特性。缺省参数包含全缺省和半缺省、参数传递特性以及声明定义带来的问题;函数重载包含重载的三种情况、不能重载的情况以及可能造成的歧义问题,还讲解了函数重载原理--名字修饰;引用包含其特性、使用场景(做参数、做返回值)、函数参数传递效率以及引用和指针的区别

wrrtx的博客 440

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

读C++标准系列 - 8.3.6 缺省参数

返回目录缺省参数不能出现在函数指针、函数引用以及typedef中(8.3-3)缺省参数可以在不同的声明中逐步给出(8.3-4)不同作用域的声明中定义的缺省参数是独立的,互不影响;同一作用域的声明中不能重复定义同一个参数的缺省值。看个例子就明白了: void f(int, int); void f(int, int = 7); void f(int = 7, int); //这句如果提到上一句前面就

Van's House 1666

21天学会C++:Day3----缺省参数

21天学会C++:Day3----缺省参数

m0_73096566的博客 570

Thinking in C++读书笔记--5.3缺省参数

缺省参数是在函数声明时就给定一个值,如果我们在调用参数时没有指定这一参数的值,编译器就会自动给这个参数赋上这个值.例:example( int size );example( int size, int quantity );可以用一个函数声明来代替:example( int size, int quantity = 0 );如果有两个定义:example( 100 )

王百万的Blog 757

C3--缺省参数-----c++基础入门学习

(Default Parameter)是指在函数定义时为参数指定一个默认值。当调用函数时,如果没有为该参数提供实参,函数就会使用这个默认值;如果提供了实参,则覆盖默认值。缺省参数可以有多个,但所有缺省参数必须放到参数表的右侧,及先定义所有非缺省参数,在定义缺省参数。当缺省参数是一个表达式时,在函数被调用时该表达式被求值。

wt20050610的博客 257

Lesson00---C++入门 1. C++关键字 2. 命名空间 3. C++输入&输出 4. 缺省参数 5. 函数重载

1.C++入门 1.1头文件:#include (区别C语言头文件:#include <stdio.h>) 1.2一般需要引入命名空间:using namespace std; 2. C++关键字 3. 命名空间 定义方法:namespace 空间名(自定义){ 这里根据需要定义变量、函数等} 使用方法:a.在函数前:using namespace std(std是空间名,也可根据需要自定义); b.在函数前:using 空间名::该空间内要引用的函数名或变量名 c.在函数内部引入:空间名::

qq_51392891的博客 216

C++缺省参数

C语言不支持给函数参数指定默认值,而C++支持。 C++默认参数机制:缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参。 例如:在test.c中,下面程序会编译失败 #include void test(int a = 1) { printf("a = %d\n", a); } int main() {

观赏的博客 884
上一篇: 【C++】2.C++的输入与输出
下一篇: 【C++】4. 重载函数
ProcedureStone
博客等级 码龄4年 254粉丝 64原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值