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的 ...
随机推荐
- mysql求同比环比
-- 参考:SQL计算月环比.月同比_路易吃泡面的博客-CSDN博客 -- mysql同比环比 drop table if EXISTS ordertable; create table ordert ...
- docker-compose创建haproxy教程
本文主要讲解通过docker-compose创建haproxy并进行代理 一.haproxy简介 HAProxy是一款基于事件驱动.单进程模型设计的四层与七层负载均衡器,它能够在TCP/UDP层面以及 ...
- 【PHP】关于fastadmin框架中使用with进行连表查询时setEagerlyType字段的理解
前言 FastAdmin是我第一个接触的后台管理系统框架.FastAdmin是一款开源且免费商用的后台开发框架,它基于ThinkPHP和Bootstrap两大主流技术构建的极速后台开发框架,它有着非常 ...
- $Kruskal$ 算法的实现 | 最小生成树
\(Kruskal\) 算法 以 Luogu P3366 为例题 实现方法:从小到大遍历每一条线,如果该线连接的两点已经都在树内则不处理,否则描出这条线 从小到大是一个贪心的实现方法,由于每描出一条线 ...
- SQL_left join 和from 两个表的区别
一个是普通的联接,结果中的记录在两个表中都有.一个是左外联接,结果中的记录在A表中存在,B表中不一定有.相当于a表为主体表,b为辅助表. 例子: mysql> select * from a;+ ...
- 8行JS代码实现Vue穿梭框
实现效果 完整 demo 参考 <template> <div class="contain"> <ul class=""> ...
- 深入理解 Vue 3 组件通信
在 Vue 3 中,组件通信是一个关键的概念,它允许我们在组件之间传递数据和事件.本文将介绍几种常见的 Vue 3 组件通信方法,包括 props.emits.provide 和 inject.事件总 ...
- C#从6.0~9.0都更新了什么?
一.C#6中新增的功能 get 只读属性 简洁的语法来创建不可变类型,仅有get访问器: public string FirstName { get; } public string LastName ...
- Python pluggy框架基础用法总结
代码为例进行说明 实践环境 Python 3.6.5 pluggy 0.13.0 例1 注册类函数为插件函数 #!/usr/bin/env python # -*- coding:utf-8 -*- ...
- ngnix简介和基础
一.Nginx简介 Nginx 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器 是一个模块化软件 [1].安装nginx 使用源码包编译安装 cd /opt ...