函数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. python subprocess读取终端输出内容

    参考链接:https://www.cnblogs.com/songzhenhua/p/9312718.html https://www.cnblogs.com/darkchii/p/9013673.h ...

  2. Apifox 6月更新|定时任务、内网自部署服务器运行接口定时导入、数据库 SSH 隧道连接

    Apifox 新版本上线啦!!! 看看本次版本更新主要涵盖的重点内容,有没有你所关注的功能特性: 自动化测试支持设置「定时任务」  支持内网自部署服务器运行「定时导入」 数据库均支持通过 SSH 隧道 ...

  3. Java反射机制原理详解

    什么是反射? Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法.本质是JVM得到class对象之后,再通过class对象进行反编译,从而获取对象的各种信息 ...

  4. ROS2开发BUG记录:在将 use_sim_timer 置为 true 时,节点的 Timer_Callback 行为“异常”

    问题: 在将 use_sim_timer 置为 true 时,节点 Timer_Callback 行为 "异常" .在回调函数中,使用 self.get_logger().info ...

  5. Solo 开发者周刊 (第5期):打破常规,探索技术新边界

    这里会整合 Solo 社区每周推广内容.产品模块或活动投稿,每周五发布.在这期周刊中,我们将深入探讨开源软件产品的开发旅程,分享来自一线独立开发者的经验和见解.本杂志开源,欢迎投稿. 产品推荐 1. ...

  6. 基于Docker安装项目管理工具禅道

    禅道是通用的项目管理软件 完整支持敏捷项目模型.瀑布项目模型.看板模型 内置项目集.产品.项目和执行四个管理框架 支持CMMI标准的落地实施 下载镜像 docker pull easysoft/zen ...

  7. [oeasy]python0091_仙童公司_八叛逆_intel_8080_altair8800_牛郎星

    编码进化 个人电脑 计算机 通过电话网络 进行连接 极客 利用技术 做一些有趣的尝试 极客文化 是 认真研究技术的 文化 计算机 不再是 高校和研究机构高墙里面的 神秘事物 而是 生活中常见的 家用电 ...

  8. 跟着ChatGPT学习设计模式 - 工厂模式

    1. 前言 在工作过程中,越发觉得设计模式的重要性.经常会有人说工作5年的人,大学生随便培训1-2月也能做同样的工作,没错,大学生的确可以做. 但其写的代码,可维护性.可扩展性.添加新功能时方便还是简 ...

  9. selenium获取验证码截图

    获取验证码截图代码: 获取验证码代码: #!/user/bin/env python3 # -*- coding: utf-8 -*- import requests from selenium im ...

  10. Jmeter参数化4-数据库数据引入

    1. 下载jmeter依赖的mysql驱动包 jmeter要连接mysql数据库,首先得下载mysql驱动包.执行"select version()"查看数据库版本 mysql历史 ...