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

C++函数提高

 一、函数默认参数

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

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

示例:

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <ctime>
using namespace std;
int func(int a, int b = 10, int c = 10) {return a + b + c;
}//1. 如果某个位置参数有默认值,那么从这个位置往后,从左向右,必须都要有默认值
//2. 如果函数声明有默认值,函数实现的时候就不能有默认参数
int func2(int a = 10, int b = 10);
int func2(int a, int b) {return a + b;
}int main() {cout << "ret = " << func(20, 20) << endl;cout << "ret = " << func(100) << endl;system("pause");return 0;
}

 

 总结:

1. 如果某个位置参数有默认值,那么从这个位置往后,从左向右,必须都要有默认值.
2. 如果函数声明有默认值,函数实现的时候就不能有默认参数

3调用函数时如果函数有默认参数则至少保留一个默认参数,func2(20,20)就没有保留一个默认参数会报错。如果函数的所有参数都是默认参数,则调用函数时可以直接函数名(),不用传参,如func2()。

二、函数占位参数

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

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

示例:

//函数占位参数 ,占位参数也可以有默认参数
void func(int a, int) {cout << "this is func" << endl;
}int main() {func(10,10); //占位参数必须填补system("pause");return 0;
}

三、函数重载

函数重载概述:

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

函数重载满足条件:

  • 同一个作用域下

  • 函数名称相同

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

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

示例:

//函数重载需要函数都在同一个作用域下
void func()
{cout << "func 的调用!" << endl;
}
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(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);func(3.14);func(10,3.14);func(3.14 , 10);system("pause");return 0;
}

函数重载注意事项

  • 引用作为重载条件

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

 示例:

//函数重载注意事项
//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 = 10)
{cout << "func2(int a, int b = 10) 调用" << endl;
}void func2(int a)
{cout << "func2(int a) 调用" << endl;
}int main() {int a = 10;func(a); //调用无constfunc(10);//调用有const//func2(10); //碰到默认参数产生歧义,需要避免system("pause");return 0;
}

注意: 


http://www.mrgr.cn/news/22163.html

相关文章:

  • 在Python中读取Excel文件
  • PAT甲级-1085 Perfect Sequence
  • Linux下的PWM驱动
  • C++万字解析类和对象(上)
  • 面试真题 | 记录一次面试真题
  • 「iOS学习」——Masonry学习
  • 如何解决缓存(redis)和数据库(MySQL)数据不一致的问题?
  • 衡石分析平台使用手册-快速入门
  • 长短期记忆神经网络-LSTM回归预测-MATLAB代码实现
  • 一名优秀的工程师应该学会在工作中提升自己,面试篇
  • matlab读取NC文件(含group)
  • vulhub远程执行命令漏洞CVE-2022-22963
  • SprinBoot+Vue校园数字化图书馆系统的设计与实现
  • Vulhub Apache Airflow (CVE-2020-11978)
  • QML入门之创建可重用的组件(一)
  • 828华为云征文|Flexus X实例C#/.Net Core 结合(git代码管理、docker自定义镜像)快速发布部署-让你的项目飞起来~
  • 【微前端记录】微前端qiankun初体验
  • 面试字节视觉大模型算法岗,太难了。。。
  • Linux在桌面上创建软件启动快捷方式
  • systemverilog如何用一行code输出两个队列在可变范围内的对比结果