当前位置: 首页 > news >正文

c++中的函数(默认参数,占位参数,重载)

1,函数默认参数

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

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

示例:

#include<iostream>
using namespace std;//函数默认参数
// 就是如果传了就用传的值,没有就默认值。 
//语法:返回值类型 函数名(形参=默认值){} 
int func(int a,int b=20,int c=30)
{return a+b+c;} //注意://如果某个位置已经有了默认参数,从这个位置往后都必须有默认值 
// int func2(int a=10,int c,int b)
// {
// 	return a+b+c;
//  } 这个是错误的 //如果函数的声明有了默认参数,函数实现就不能有默认参数
//声明和实现只能有一个默认参数 
//int func2(int a=10,int b=10);
//
//int func2(int a=10,int b=10) 
//{
//	return a+b;
//}int main()
{cout << func(10,30) << endl;system("pause");return 0;} 

2,函数占位参数

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

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

示例:

#include<iostream>
using namespace std;//占位参数 
//返回值类型  函数名(数据类型){} 
//占位参数还可以有默认参数 
void func(int a,int)
{cout<<"this is func"<<endl;
}int main()
{func(10,30); system("pause");return 0;} 

3,函数重载

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

函数重载满足条件:

*同一个作用域下

*函数名称相同

*函数参数类型不同 或者 个数不同 或者 顺序不同

#include<iostream>
using namespace std;//函数重载
//可以让函数名相同,提高复用性//函数重载的满足条件//在同一作用域下//函数名称相同//函数参数类型不同,或者个数不同,或者顺序不同 
void func()
{cout<<"func()的调用!"<<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(double a,int b);
{cout<<"func(double a,int b)的调用"<<endl;
}//函数的返回值不可以作为函数的重载条件 
//int func(double a,int b)
//{
//	cout<<"func(double a,int b)的调用!"<<endl;
//}int main()
{func(); func(10,3.14);func(3.14,10);system("pause");return 0;} 

函数重载的注意事项

*引用作为重载条件

*函数重载碰到函数默认参数

#include<iostream>
using namespace std;//函数重载的注意事项
//1,引用作为重载的条件void func(int &a)
{cout<<"func(int &a)调用"<<endl;
}
void func(const int &a)
{cout<<"func(const int &a)调用"<<endl;
}
//2,函数重载碰到默认参数 
void func2(int a,int b)
{cout<<"func2(int a,int b)的调用"<<endl;
}
void func2(int a)
{cout<<"func2(int a)的调用"<<endl;
}
int main()
{int a=10;func(a);// 调用的是上面的 func(10);//调用的额是下面的const的  
//	 func2(10);//碰到默认参数产生歧义,需要避免 system("pause");return 0;} 

http://www.xdnf.cn/news/454105.html

相关文章:

  • Arduino使用红外收发模块
  • MySQL基础之开窗函数
  • 嵌入式(c语言篇)Day9
  • 基于nacos2.5.1的java微服务项目开发环境配置简介
  • Spyglass:跨时钟域同步(同步单元)
  • Gin 框架指南(代码+通俗解析版)
  • 2025前四月新能源汽车出口增长52.6%,外贸ERP数字化助力汽企持续跃升
  • 给 DBGridEh 增加勾选用的检查框 CheckBox
  • 通用软件项目技术报告 - 导读I
  • C++ 并发编程(1)再学习,为什么子线程不调用join方法或者detach方法,程序会崩溃? 仿函数的线程启动问题?为什么线程参数默认传参方式是值拷贝?
  • 阿里的库存秒杀实现与Inventory Hint技术解析
  • Windows系统Anaconda/Miniconda的安装、配置、基础使用、清理缓存空间和Pycharm/VSCode配置指南
  • Linux系统编程——fork函数的使用方法
  • idea插件使用
  • Prometheus 的介绍与部署(入门)
  • Spring 的 异常管理的相关注解@ControllerAdvice 和@ExceptionHandler
  • 2011-2019年各省总抚养比数据
  • 【GESP真题解析】第 5 集 GESP一级 2023 年 3 月编程题 2:长方形面积
  • Python实例题:Python抓取相亲网数据
  • Maplibgre-gl 学习1 初识
  • leetcode刷题日记——旋转链表
  • 深入理解Java HotSpot中的即时编译
  • 规控算法分类
  • 【Vue.js 的核心魅力:深入理解声明式渲染】
  • 学习黑客NFC技术详解
  • 互联网协议的多路复用、Linux系统的I/O模式
  • 【FileZilla】sftp协议的数据传输上传和下载
  • 软考软件设计师中级——软件工程笔记
  • QT---信号与槽
  • scons user 3.1.2