C++默认参数与函数重载

咱们一起学C++第一百零五篇:之函数重载、默认参数与名字修饰 在C++的学习道路上,我们共同探索前行,每一次分享都是为了让大家更好地理解这门语言。此次,我们将深入探讨函数重载、默认参数以及名字修饰这些重要概念。它们是C++编程中提升代码灵活性、可读性和安全性的关键要素。希望通过详细的讲解和实例分析,能帮助大家熟练掌握这些知识,让我们一起在C++的知识海洋中继续前行,共同成长,共同进步。 阅读详情

一、默认参数
在C++中,可以为参数指定默认值。在函数调用时没有指定与形参相对应的实参时, 就自动使用默认参数。

默认参数的语法与使用:
(1)在函数声明或定义时,直接对参数赋值。这就是默认参数;
(2)在函数调用时,省略部分或全部参数。这时可以用默认参数来代替。

注意:
(1)默认参数只可在函数声明中设定一次。只有在无函数声明时,才可以在函数定义中设定。
(2)默认参数定义的顺序为自右到左。即如果一个参数设定了缺省值时,其右边的参数都要有缺省值。
如:int mal(int a, int b=3, int c=6, int d=8) 正确,按从右到左顺序设定默认值。
int mal(int a=6, int b=3, int c=5, int d) 错误,未按照从右到左设定默认值。c设定缺省值了,而其右边的d没有缺省值。
(3)默认参数调用时,则遵循参数调用顺序,自左到右逐个调用。这一点要与第(2)分清楚,不要混淆。
如:void mal(int a, int b=3, int c=5); //默认参数
mal(3, 8, 9 ); //调用时有指定参数,则不使用默认参数
mal(3, 5); //调用时只指定两个参数,按从左到右顺序调用,相当于mal(3,5,5);
mal(3); //调用时只指定1个参数,按从左到右顺序调用,相当于mal(5,3,5);
mal( ); //错误,因为a没有默认值
mal(3, , 9) //错误,应按从左到右顺序逐个调用
再如: void mal(int a=8, int b=3, int c=5); //默认参数
mal( ); //正确,调用所有默认参数,相当于mal(8,3,5);

(4)默认值可以是全局变量、全局常量,甚至是一个函数。但不可以是局部变量。因为默认参数的调用是在编译时确定的,而局部变量位置与默认值在编译时无法确定。

二、函数重载
在相同的声明域中,函数名相同,而参数表不同。通过函数的参数表而唯一标识并且来区分函数的一种特殊的函数用法。

参数表的不同表现为:
1、参数类型不同;
2、参数个数不同;

特别注意:返回类型不同不可以作为函数重载的标识。

函数重载的注意事项

1、函数的形参必须不同,或者个数不同,或者类型不同,不能够只依靠函数的返回值类型不同或形参变量名不同来实现函数重载。
2、不要将不同功能的函数定义为重载函数,以免出现对调用结果的误解。如:
int add(int x,int y)

{

return x+y;

}


float add(float x,float y)

{

return x-y;

}

 

重载函数与默认参数重叠导致的二义性问题:
func(int); //重载函数1,只有1个参数,无默认参数
func(int, int =4); //重载函数2,有2个参数,有1个默认参数
func(int a=3, int b=4, int c=6); //重载函数3,有3个参数,有3个默认参数
fucn(float a=3.0, float b=4.0 float c=5.0); //重载函数4,有3个参数,有3个默认参数
fucn(float a=3.0, float b=4.0 float c=5.0 float d=7.9 ); //重载函数5,有4个参数,有4个默认参数

func(2); //可调用前3个函数,出现二义性
func(2.0); //可调用后2个函数,出现二义性

所以当重载函数与默认参数共同使用时,要注意出现二义性问题。

 

ChatGPT Windows桌面版:从安全下载到高效配置的全流程指南 WebView封装技术是将网页应用转化为独立桌面程序的核心方法,它通过嵌入浏览器内核实现跨平台功能复用。其原理在于利用Electron或Tauri等框架,将Web内容打包进原生应用外壳,同时注入系统级API调用能力。这项技术的工程价值在于显著提升了Web应用的系统集成度和用户体验,使其能够支持全局快捷键、独立进程和本地数据存储等原生特性。在AI助手深度集成工作流的应用场景中,这种封装模式解决了浏览器多标签页切换繁琐、会话管理不便等痛点。本文以ChatGPT桌面客户端为例,详细解析了基于开源项目的安全下载路径 阅读详情

相关推荐

深入剖析STM32F103 I2C总线死锁问题及高效应对策略

本文深入剖析了STM32F103硬件I2C总线在轮询模式下发生死锁的根本原因,即硬件状态机的预取机制与软件响应速度不匹配。文章提供了高效的解决方案,包括在轮询模式下提前发送NACK/STOP信号、降低总线速度,以及治本的中断与DMA应用策略,帮助开发者根据项目需求选择最合适的方案,彻底解决这一经典硬件缺陷问题。

weixin_29184371的博客 206

C++默认参数函数及函数重载

有默认参数函数 1.什么是有默认参数函数 一般情况下,C语言中在函数调用时形参从实参取得,但是在C++中提供一种简单处理方法给形参一个默认值,当调用函数时,若该形参未传入参数,则形参使用定义时的默认值。 2.代码实现: #include<iostream> using namespace std; void fun...

diedanzhuai8395的博客 239

TeXstudio完整安装配置教程(2025最新版)

至此,你已经完成了TeXstudio的完整安装和配置!现在你可以:✅ 使用TeXstudio编写LaTeX文档✅ 正确编译中英文混排的文档✅ 掌握基本的编辑和配置技巧LaTeX的学习曲线较陡,但一旦掌握,你会发现它在学术写作中的强大之处。建议从简单的文档开始练习,逐步掌握更高级的功能。祝你LaTeX写作顺利!如果有任何问题,欢迎在评论区留言交流。关键词:TeXstudio安装、LaTeX环境配置、中文LaTeX、TeX Live、学术论文写作更新日期:2025年10月。

weixin_51241407的博客 4502

Scratch与C++

在我眼中,Scratch是用来玩的,现在,我们来比较一下它与c++d的区别: 1、

pzjdsg666的博客 3445

SUMO仿真教程(5) —— 使用“XML“语言自定义构建路网

文章目录一.简要介绍1.node file2.edge file3.lane definitions(1)路段细分(2)邻近的对向车道(3)删除边或车道4.type file(1)简要概述(2)edge定义中引用type文件的示例(3)指定车辆种类的速度限制5.connections file(1)简要概述:(2)connection的属性参数(3)删除连接(4)设置连接的优先级(5)同一边的多个连接二.演示示例:1.自定义编写node file2.自定义编写edge file3.自定义编写type fil

weixin_50632459的博客 5017

EDEM基础操作指南

EDEM(Enhanced Discrete Element Method)是一种用于模拟颗粒物料行为的软件工具。它可以模拟颗粒的碰撞、流动、堆积等过程,广泛应用于颗粒物料工程、振动筛分、堆垛机械、矿山开采等领域。本文将介绍EDEM的基础操作步骤,并提供相应的源代码示例。以上是EDEM的基础操作步骤。通过创建EDEM项目、定义颗粒材料、导入几何模型、设置边界条件、创建颗粒流场和运行模拟,您可以开始模拟颗粒物料的行为并进行相应的分析和优化。请根据您的具体需求和场景进行相应的参数设置和功能调用。

TrDelphi的博客 5293

C++中函数默认参数与重载

函数调用,是主调函数向被调函数传值,然后被调函数返回结果给主调函数的一个过程这个过程是需要函数栈来辅助的栈是向下生长的,就是由高地址向低地址开辟空间堆是向上生长的,就是由低地址向高地址开辟空间形参在入栈的时候是从右向左入栈的,而实参传值给形参的时候是从左向右传值(相当于出栈的顺序)

m0_75178021的博客 1072

实测iOS和安卓大不同!用NFC触发小程序跳转的完整避坑指南(含NFC Tools配置)

本文深入解析iOS与安卓在NFC触发小程序跳转时的核心差异,提供微信与支付宝小程序的NFC实现方案及优化技巧。涵盖跨平台兼容性测试方法论、性能优化策略及异常处理方案,帮助开发者避开常见陷阱,提升跳转成功率。特别针对NFC Tools配置和微信Universal Link使用进行详细指导。

asdfghjkl978564的博客 434

C++基础之函数重载和默认参数

主要介绍:函数重载,nm指令查看编译,C/C++混合编程,默认参数的目的,默认参数的声明,默认参数的顺序规定,默认参数与函数重载(易错) ,默认参数的注意点

yolan2626的博客 3874

2024年CSP-X复赛真题题解(T1:购物)

2024年CSP-X复赛真题题解(T1:购物)

王老师青少年编程 1180

AI Agent Harness Engineering 开发效率工具:Prompt工程、调试与监控平台

随着AI Agent技术从原型探索走向企业级落地,开发者普遍面临Prompt迭代无版本管控、Agent执行黑盒无法定位错误、上线后无监控导致故障频发、多团队协作效率低下四大核心痛点,据2024年LLMOps行业报告显示,没有配套工具链的Agent开发团队平均迭代周期是有工具链团队的6倍,线上故障率高达23%,平均资源浪费超过60%。

小白菜的博客 426

C++ 函数重载碰到默认的参数

#include<iostream> #include<string> using namespace std; //引用作为重载的条件 void func(int &a) { //非常量引用 cout << " this is func" << endl; } void func(const int &a) { // 常量引用 const int &a = 10; 合法 cout << "c.

ywl470812087的博客 11万+

Xilinx FPGA ICAP原语实现多重配置

众所周知,常见的FPGA通常为SRAM结构,固件程序一般存放在外置的串行Flash中,比如SPI Flash,M25P16或N25Q128等。 FPGA启动时,一般先从SPI起始地址开始加载数据到内部的SRAM,加载完成、校验通过则会直接运行。 那么有没有可能在SPI Flash中存放两个或多个FPGA固件呢?

whik1194的博客 4614

C++默认参数和函数重载

C++默认参数和函数重载

南明离火的博客 789

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C++函数重载以及默认参数的学习

c++函数重载1.1 什么是函数重载1.2 函数重载的形式1.3 函数重载与默认参数的冲突总结 在学习c++的过程中学到了一些关于函数重载以及函数默认参数的一些知识,因此记录下来,因为笔者是初学者,如果有什么错误请各位大佬斧正! 1.1 什么是函数重载 函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。重载函数通常用来命名一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处。同时在参考其他大佬的文章中发现,即使是函数

tmgt的博客 1015

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

C++基础整理(6)之函数重载、函数默认参数

函数重载,重载机制,函数重载与重写区别,默认参数

ULTRAmanTAROACE的博客 1601

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C++学习笔记:默认参数、占位参数、函数重载

对C++的默认参数、占位参数、函数重载进行了介绍,内含相应例程。

m0_61592836的博客 1288

C++ 函数 函数的重载 有默认参数的函数

函数的重载 C++允许用同一函数名定义多个函数,这些函数的参数个数和参数类型不同。这就是函数的重载(function overloading)。 int max1(int a,int b, int c); double max2(double a,double b,double c); long max3(long a,long b,long c); ...

weixin_30711917的博客 495

C++函数默认参数与重载

在同一作用域,函数名字相同参数不同(个数 种类 顺序、有无const修饰其中一个不同即可),与返回值无关。注:1、c语言不能用函数重载,因为编译方式不同,c++编译函数的时候会将函数重新命名,c语言函数名字不能相同。1、如果当前位置有默认值,那么它右边的所有形参都需要有参数默认值。//此时调用函数时两个重载函数都满足,就会有二义性问题,应该避免。当执行函数时,编译器会根据实参的类型选择合适的函数来调用。在c++中函数形参列表中的变量是可以有默认值的。cout << " 无参";//右边的参数都要有默认值。

2302_81041084的博客 560

C++基础:默认参数与函数重载

阅读本篇文章你将学到什么? 了解什么是默认参数 什么是函数重载? 为什么C++支持函数重载 Gcc编译器下的函数修饰

qq_56870066的博客 878

【C++ | 函数】默认参数、哑元参数、函数重载、内联函数

👉本文介绍C++相对于C语言新增的几个函数特性:默认参数、哑元参数、函数重载、内联函数,并举例子加深理解。

wkd_007的博客 2077

C++函数重载、默认参数、占位参数、类

C++函数重载、默认参数、类的基本认识

qq_53822523的博客 1157

3.4 C++的函数默认参数与函数重载

1 默认参数 默认参数是指当函数调用中省略了实参,而自动使用的值。必须通过函数原型来设置默认值,如1)处。默认参数值就是初始化值,所以原型将n初始化为1,如果传递省略参数n,则它的值为1;否则传递的值将覆盖1。 注意:1) char * left(const char* str, int n = 1); // 1) int main() { left(sample); ...

vinkuan的博客 469

C++默认参数与函数重载 注意事项

一、默认参数 在C++中,可以为参数指定默认值。在函数调用时没有指定与形参相对应的实参时, 就自动使用默认参数。 默认参数的语法与使用: (1)在函数声明或定义时,直接对参数赋值。这就是默认参数; (2)在函数调用时,省略部分或全部参数。这时可以用默认参数来代替。 注意: (1)默认参数只可在函数声明中设定一次。只有在没有函数声明时,才可以在函数定义中设定。(#add ,此句意

把握自己。 1万+

c++中函数的重载和默认参数

函数的重载 函数重载: 就是静态多态的一种设计方式 实现原理: c++ 在编译的时候会 《自动检测》 ,函数,参数列表, 对于各个不同的参数进行函数的别名化,来产生这个函数的多种状态,然后根据用户传入的参数,来确定要执行那个 状态的函数。 函数重载的注意事项 1.函数重载必须要函数名一致 2.函数重载的依据是参数列表的不同 (类型,个数) 3.返回值类型不能作为重载的依据 4.调用重载函数的时候,需要注意调用的 歧义 void func(int a) ->func_int

weixin_48256350的博客 1773
上一篇: NOWSMS简介
下一篇: 论c++构造函数中的不合理设计
BlueSy2008
博客等级 码龄20年 26粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值