函数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. .Net Core WebApi 使用 JWT 验证身份

    .h2 { background-color: rgba(78, 110, 242, 1); color: rgba(255, 255, 255, 1); padding: 10px } 一.注册身份 ...

  2. gdb 根据c语言二进制文件进程号查看内部多线程任务

    C语言二进制文件 a 编译时添加了 -g (gdb 调试), 但是 gdb a 这种方式有时不容易复现一些场景.这时可以先正常启动 a, 然后根据 a 的进程号启动gdb调试. # 1. 找到程序进程 ...

  3. spring-关于组件的注入及获取流程

    一.组件注入的基本流程: 容器初始化: Spring应用启动时,会读取配置(如XML配置.注解配置等),并根据这些配置创建Bean定义(BeanDefinition). 根据Bean定义,Spring ...

  4. vol2以及mimikatz插件安装教程

    volatility2安装 https://github.com/volatilityfoundation/volatility git clone https://github.com/volati ...

  5. webpack性能优化方式之dll--- webpack.dll.config.js

    通常来说,我们的代码都可以至少简单区分成业务代码和第三方库.如果不做处理,每次构建时都需要把所有的代码重新构建一次,耗费大量的时间.然后大部分情况下,很多第三方库的代码并不会发生变更(除非是版本升级) ...

  6. 学习笔记--Java方法重载

    Java方法重载 感受 以下代码不使用"方法重载",不使用overload,分析程序存在的缺点 public class OverloadTest01 { // 入口 public ...

  7. 如何在本地修改Hosts文件设置域名访问?

    网站在未上线的时候,我们一般会在本地搭建Web环境并安装WordPress来设计页面.测试插件.数据备份.网站搬家. 为了能够在本地通过域名访问网站,就需要在修改hosts文件来绑定域名,方法如下: ...

  8. Megacity Unity Demo工程学习

    1.前言 Megacity Demo发布于2019年春,本博文撰写于2024年,ECS也早已Release并发布了1.2.3版本.不过好在核心变化不大,多数接口也只是换了调用名称, 该Demo相较于之 ...

  9. 【MySQL】 线上补数据SQL

    昨天一下午就为了补业务数据,写SQL快崩溃了得... 直接贴不解释了 -- 先拿到[销售变更id]拿到[变更信息] -- 通过[变更信息]的主表id拿到[主表信息] -- 条件可以是 MAX(cc.i ...

  10. 【Windows】Win10 20H2版本 管理员身份问题

    问题描述: 从之前的1909版本升级过来的,在一开始就是管理员身份,升级之后还是管理员身份没错 但是打开一些软件又会开始提示是否安全,还有C盘访问权限警告. 解决办法: 参考方案地址 http://w ...