c++学习笔记(三):函数++
函数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++学习笔记(三):函数++的更多相关文章
- python学习笔记三 函数(基础篇)
函数 内置函数 常用的内建函数: type() 列出指定对象的类型 help() 能够提供详细的帮助信息 dir() 将对象的所有特性列出 vars() 列出当前模块的所有变量 file, ...
- Typescript 学习笔记三:函数
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- ES6学习笔记<三> 生成器函数与yield
为什么要把这个内容拿出来单独做一篇学习笔记? 生成器函数比较重要,相对不是很容易理解,单独做一篇笔记详细聊一聊生成器函数. 标题为什么是生成器函数与yield? 生成器函数类似其他服务器端语音中的接口 ...
- MYSQL学习笔记三:日期和时间函数
MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...
- Matlab学习笔记 figure函数
Matlab学习笔记 figure函数 matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象.每一个这样的窗口都有一些属性,例如窗口的尺寸.位置,等等.下面一一介绍它们. ...
- matlab学习笔记 bsxfun函数
matlab学习笔记 bsxfun函数 最近总是遇到 bsxfun这个函数,前几次因为无关紧要只是大概看了一下函数体去对比结果,今天再一次遇见了这个函数,想想还是有必要掌握的,遂查了些资料总结如下. ...
- [Firefly引擎][学习笔记三][已完结]所需模块封装
原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读: 笔记三主要就是各个模块的封装了,这里贴 ...
- 学习笔记(三)--->《Java 8编程官方参考教程(第9版).pdf》:第十章到十二章学习笔记
回到顶部 注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法 ...
- muduo网络库学习笔记(三)TimerQueue定时器队列
目录 muduo网络库学习笔记(三)TimerQueue定时器队列 Linux中的时间函数 timerfd简单使用介绍 timerfd示例 muduo中对timerfd的封装 TimerQueue的结 ...
- angular学习笔记(三十一)-$location(1)
本篇介绍angular中的$location服务的基本用法,下一篇介绍它的复杂的用法. $location服务的主要作用是用于获取当前url以及改变当前的url,并且存入历史记录. 一. 获取url的 ...
随机推荐
- ORACLE 如何判断某字段是否小于0
Oracle 自带的函数 SIGN 表达式的正 (+1).零 (0) 或负 (-1) 号 SQL> SELECT SIGN(-47.3), SIGN(0), SIGN(47.3) FROM du ...
- Spring(注解方式)简单入门
环境准备 maven jdk Spring Eclipse 项目创建 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0 ...
- [oeasy]python0035_ 整合shell编程_循环_延迟_清屏
整合shell编程 回忆上次内容 用\r 可以让输出位置回到行首 原位刷新时间 如果想要的是大字符效果 需要使用 figlet 但同时还希望能刷新 编辑 这可能吗? 建立脚本 我们得熟悉一下s ...
- SMU Summer 2024 第一周周报 (zhaosang)
学到了很多,不仅仅是学习方面的,在学校学跟在家寒假对比,天差地别吧. 补题的过程中收获满满,最近练习二分三分,栈队列单调栈等习题,题目不简单,努力学习中.. 打比赛也是,也有打的很惨的时候,我自己需要 ...
- 基础-数组_C语言
C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合.数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量. 数组的声明并不是声明一个个单独的变量,比如 runoob0. ...
- ComfyUI进阶:Comfyroll插件 (七)
前言: 学习ComfyUI是一场持久战,而Comfyroll 是一款功能强大的自定义节点集合,专为 ComfyUI 用户打造,旨在提供更加丰富和专业的图像生成与编辑工具.借助这些节点,用户可以在静态图 ...
- SpringTask
SpringTask是spring提供的一个任务调度工具,按照约定的时间自动执行代码逻辑 定时任务框架,即定时自动执行某段代码 应用场景:信用卡每月还款提醒,火车售票系统处理未支付订单 cron表达式 ...
- 【MySQL】 将字段相同的记录排在一起,按时间倒序
一.实现效果: 蓝牙mac字段是相同的记录,排在一起,再按时间倒序,总体时间来说也需要倒序 二.SQL编写: 最开始的想法就是,那我直接按mac和时间排序不就好了 SELECT * FROM aca_ ...
- 【DataBase】局域网访问Windows系统下的MySQL8
Windows服务主机已经安装好MySQL8并且配置了用户密码 MySQL8更改用户密码: ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' ...
- 【设计模式 Design Pattern】【UML】建模语言
什么是UML图? UML-Unified Modeling Language 统一建模语言,又称标准建模语言. 是用来对软件密集系统进行可视化建模的一种语言. UML的定义包括UML语义和UML表示法 ...