函数PLUS

函数默认参数

在c++中,函数的形参列表中的形参是可以有默认值的。调用函数时,如果未传递参数的值(传入参数为空),则会使用默认值,如果指定了值,则会忽略默认值,使用传递的值。

语法:返回值类型 函数名 (参数 = 默认值) { }

int func(int a, int b = 10, int c = 20)
{
return a + b +c;
} //1.如果某个位置参数有默认值,那么从这个位置往后,从左到右,必须有默认值
//2.如果函数声明有默认值,那么函数实现的时候就不能有默认参数
int func2(int a = 10, int b = 20);
int func2(int a, int b)
{
return a + b;
}

函数占位参数

c++中函数的形参列表里可以有占位参数,用来做占位,调用函数时必须填补该位置

语法:返回值类型 函数名 (数据类型) { }

现阶段函数的占位参数一样不大,但后续会用到

//函数占位参数,占位参数也可以有默认参数
int func(int a, int)
{
cout<<"this is func"<<endl
} int main()
{
func(10,10);//占位参数必须填补
return 0;
}

函数重载

作用:使函数名可以相同,提高复用性

需满足条件:

  • 在同一个作用域下
  • 函数名相同
  • 函数参数类型不同,或者个数不同顺序不同

Tips:函数的返回值不能作为函数重载的条件

void func(int a){
cout<<"func(int a)"<<endl;
} void func(double a){//类型不同
cout<<"func(double a)"<<endl;
} void func(int a, double b){//个数不同
cout<<"func(int a, double b)"<<endl;
} void func(int b, double a){//顺序不同
cout<<"func(int b, double a)"<<endl;
} int func(int b, double a){//错误的,虽然这里返回值类型为int与上面的void不同,但不能作为函数重载的条件
cout<<"func(int b, double a)"<<endl;
}

函数重载的注意事项

//1.引用作为重载的条件
void func(int &a) //int &a = 10; 不合法
{
cout<<"func(int &a)"<<endl;
} void func(const int &a)
{
cout<<"func(const int &a)"<<endl;//const int &a = 10; 合法
} //2.函数重载遇到默认函数
void func2(int a, int b = 10)
{
cout<<"func(int a, int b = 10)"<<endl;
}
void func2(int a)
{
cout<<"func(int a)"<<endl;
} int main()
{
int a = 10;
func(a);//调用func(int &a)
func(10);//调用func(const int &a)
//内存空间分配的原因 func2(10);//此处代码报错
func2(10, 10)//代码不报错
//当函数重载遇到默认参数时会出现二义性(有歧义),有默认参数的函数尽量避免函数重载 return 0;
}

c++学习笔记(三):函数++的更多相关文章

  1. python学习笔记三 函数(基础篇)

    函数 内置函数 常用的内建函数: type()  列出指定对象的类型 help()  能够提供详细的帮助信息 dir()    将对象的所有特性列出 vars()  列出当前模块的所有变量 file, ...

  2. Typescript 学习笔记三:函数

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  3. ES6学习笔记<三> 生成器函数与yield

    为什么要把这个内容拿出来单独做一篇学习笔记? 生成器函数比较重要,相对不是很容易理解,单独做一篇笔记详细聊一聊生成器函数. 标题为什么是生成器函数与yield? 生成器函数类似其他服务器端语音中的接口 ...

  4. MYSQL学习笔记三:日期和时间函数

    MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...

  5. Matlab学习笔记 figure函数

    Matlab学习笔记 figure函数 matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象.每一个这样的窗口都有一些属性,例如窗口的尺寸.位置,等等.下面一一介绍它们. ...

  6. matlab学习笔记 bsxfun函数

    matlab学习笔记 bsxfun函数 最近总是遇到 bsxfun这个函数,前几次因为无关紧要只是大概看了一下函数体去对比结果,今天再一次遇见了这个函数,想想还是有必要掌握的,遂查了些资料总结如下. ...

  7. [Firefly引擎][学习笔记三][已完结]所需模块封装

    原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读:        笔记三主要就是各个模块的封装了,这里贴 ...

  8. 学习笔记(三)--->《Java 8编程官方参考教程(第9版).pdf》:第十章到十二章学习笔记

    回到顶部 注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法 ...

  9. muduo网络库学习笔记(三)TimerQueue定时器队列

    目录 muduo网络库学习笔记(三)TimerQueue定时器队列 Linux中的时间函数 timerfd简单使用介绍 timerfd示例 muduo中对timerfd的封装 TimerQueue的结 ...

  10. angular学习笔记(三十一)-$location(1)

    本篇介绍angular中的$location服务的基本用法,下一篇介绍它的复杂的用法. $location服务的主要作用是用于获取当前url以及改变当前的url,并且存入历史记录. 一. 获取url的 ...

随机推荐

  1. Qt实现汽车仪表盘

    在UI界面显示中,仪表盘的应用相对比较广泛,经常用于显示速度值,电压电流值等等,最终实现效果如下动态图片(文末提供给源工程下载): 主要包含以下绘制步骤: 绘制画布 /* * 绘制画布 */ void ...

  2. python3求取大文件sha1值和md5

    小文件 import hashlib import base64 filePath = "test.txt" with open(filePath, "rb") ...

  3. 一款开源免费功能强大的一站式自动化运维及自动化部署平台orion-ops

    一站式自动化运维及自动化部署平台, 使用多环境的概念, 提供了机器管理.机器监控报警.Web终端.WebSftp.机器批量执行.机器批量上传.在线查看日志.定时调度任务.应用环境维护.应用构建及发布任 ...

  4. LeViT:Facebook提出推理优化的混合ViT主干网络 | ICCV 2021

    论文提出了用于快速图像分类推理的混合神经网络LeVIT,在不同的硬件平台上进行不同的效率衡量标准的测试.总体而言,LeViT在速度/准确性权衡方面明显优于现有的卷积神经网络和ViT,比如在80%的Im ...

  5. Docker通信全视角:原理、实践与技术洞察

    本文全面深入地探讨了Docker容器通信技术,从基础概念.网络模型.核心组件到实战应用.详细介绍了不同网络模式及其实现,提供了容器通信的技术细节和实用案例,旨在为专业从业者提供深入的技术洞见和实际操作 ...

  6. 从基础到高级应用,详解用Python实现容器化和微服务架构

    本文分享自华为云社区<Python微服务与容器化实践详解[从基础到高级应用]>,作者: 柠檬味拥抱. Python中的容器化和微服务架构实践 在现代软件开发中,容器化和微服务架构已经成为主 ...

  7. C# WinForm自制项目模板入坑记

    1. 创建模板配置 1.1 在项目目录中创建.template.config文件夹 1.2 创建一个名为"template.json" 的新文件 { "author&qu ...

  8. Pandas库学习笔记(1)

    参考:菜鸟教程 pandas库使用了NumPy的大多数功能.建议您先阅读有关NumPy的教程,然后再继续本教程. Pandas 适用于处理以下类型的数据: 与 SQL 或 Excel 表类似的,含异构 ...

  9. 如何查询MySQL存储的树形结构,层次结构

    表定义如下 如果我们需要在表中查询这个树状结构,通过SQL语句,有两种查询方法: 1.通过inner自连接查询,适用于简单的结构 SELECT * FROM course_category AS on ...

  10. Jmeter二次开发函数之入门

    背景:Jmeter不能满足我们的参数需求,如生成手机号码.身份证号码等业务,固对jmeter进行二次函数开发. jmeter提供了接口供用户进行二次开发,我们只需引入包进行编辑.从jmeter规范上, ...