1. 函数默认参数

在C++中,函数的形参列表中的形参是可以有默认值的

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

注意

  1. 如果某个位置已经有了默认参数,那么从这个位置往后,从左到右都必须有默认值

  2. 如果函数的声明有了默认参数,那么函数的实现就不可以有默认参数

#include<iostream>
using namespace std; //函数的默认参数 //如果我们自己传入数据,就用自己的数据,如果没有,那么用默认值
int func(int a, int b=20, int c=30){
return a+b+c;
} //注意事项
//1. 如果某个位置已经有了默认参数,那么从这个位置往后,从左到右都必须有默认值
//2. 如果函数的声明有了默认参数,那么函数的实现就不可以有默认参数
int main(){ cout<<func(10,30)<<endl;
return 0; }

2. 函数的占位参数

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

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

#include<iostream>
using namespace std; //占位参数
//占位参数 可以有默认参数
void func(int a, int = 10){
cout<<"this is func"<<endl;
} int main(){ func(10);
return 0; }

3. 函数重载

3.1 函数重载概述

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

函数重载满足条件

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

注意:函数的返回值不可以做为函数重载的条件

#include<iostream>
using namespace std; //函数重载
//可以让函数名相同,提高复用性 //函数重载的满足调价
//1.必须在同一个作用域下
//2.函数名称相同
//3.函数参数类型不同或者个数不同或者顺序不同
void func(){
cout<<"this is func"<<endl;
} void func(int a){
cout<<"this is func(int a)"<<endl;
} void func(double a){
cout<<"this is func(double a)"<<endl;
} //注意事项
//函数的返回值不可以做为函数重载的条件 int main(){ func();
func(10);
func(3.14);
return 0; }

3.2 函数重载注意事项

  • 引用作为重载条件
  • 函数重载碰到函数默认参数
#include<iostream>
using namespace std; //函数重载的注意事项
//1.引用作为重载的条件
void func(int &a){
cout<<"this is func(int &a)"<<endl;
} void func(const int &a){
cout<<"this is func(const int &a)"<<endl;
} //2.函数重载碰到默认参数
void func2(int a, int b = 10){
cout<<"this is func2(int a)"<<endl;
} void func2(int a){
cout<<"this is func2(int a)"<<endl;
} int main(){ int a = 10;
func(a); func(10); func2(10); //报错,出现二义性 return 0; }

最新文章

  1. Matlab slice方法和包络法绘制三维立体图
  2. mysql远程登录
  3. Dynamics AX 2012 R2 业务系列-销售业务流程
  4. 你还没成为Delphi QC的成员吗?(转红鱼儿)
  5. kuangbin_ShortPath F (POJ 3259)
  6. MyBatis(3.2.3) - Configuring MyBatis using XML, Environment
  7. STL unordered_set
  8. 通过layer-list多图层叠加效果实现圆角功能
  9. java中Executor、ExecutorService、ThreadPoolExecutor介绍(转)
  10. Android开发之异步具体解释(二)之AsyncTask
  11. Python虚拟环境virtualenv
  12. SSIS获得Excel行号(转自http://blog.csdn.net/zplume/article/details/19113911)
  13. &lt;pre&gt;标签的基本样式设置
  14. 【mysql】工具使用
  15. socket发送http报文的疑惑(求高手指点一二)
  16. 小学四则运算APP 第一个冲刺阶段 第三天
  17. Underscore template
  18. Tensorflow框架初尝试————搭建卷积神经网络做MNIST问题
  19. Android Issue分析方法(用anr来说明)
  20. Android开发——View滑动冲突解决方案

热门文章

  1. Mac-搭建Hadoop集群
  2. shell (二) shell for循环
  3. win10系统:VMware无法在Windows运行该怎么办?
  4. Linux内核kobject结构体分析
  5. Docker从入门到实践(3)
  6. N x N 的矩阵,顺时针旋转
  7. [转帖]grep -v、-e、-E
  8. netty心跳机制解决
  9. GIT 安装和使用
  10. Phoenix连接安全模式下的HBase集群