函数的参数 函数重载

186 阅读1分钟

「这是我参与2022首次更文挑战的第3天,活动详情查看:2022首次更文挑战

🌈函数默认参数

  • 在C++中,函数的形参列表中的形参是可以有默认值
  • 语法 :返回值类型 函数名(行参=默认值){ }
  • 注意:1.如果某个位置已经有了默认参数,那么这个位置后面都必须有默认值 2.如果函数声明有默认参数,函数实现就不能有默认参数;反之,实现有了,默认就不能有
#include<iostream>
using namespace std;
int func(int a,int b=20,int c=30) //在b后面的c必须有默认值,a可以不有 
{
	return a+b+c;
}
int func1(int x,y)//函数声明不能再有默认参数即便是相同的值
int func1(int x=1,y=2)//函数实现 
{
	return x+y;
}
int main() {
	cout<<func(10)<<endl;//10+20+30 
	cout<<func(10,40)<<endl;//10+40+30 传入了值就用传入的值,没有就调用默认值 
        cout<<func1()<<endl;
}

🌈函数的占位参数

  • 函数的形参列表里可以有占位参数,用来做占位,调用函数时必须填补该位置
  • 可以有默认参数
  • 语法:返回值类型 函数名 (数据类型){ }
#include<iostream>
using namespace std;
int func(int a,int)//第二个int表示占位参数
{
	cout<<"this is func"<<endl; 
 } 
 int func1(int a,int=1)//给占位参数赋默认值 
{
	cout<<"this is func1"<<endl; 
 } 
 int main()
 {
 	func(1,1);//占位参数必须填补
        func1(1);//已有默认参数可以不用填补
	 return 0; 
 }

🌈函数重载

  • 作用:函数名相同,提高复用性
  • 条件同一作用域函数名相同函数参数类型不同个数不同顺序不同
  • 注意函数的返回值不可以作为函数重载的条件
  • 引用也可以作为函数重载的条件
  • 函数重载尽量避免使用默认参数,容易出现二义性
#include<iostream>
using namespace std;
int func(int &a)//引用作为重载条件 
{
	cout<<"func(int &a)的调用"<<endl; 
 }  
 int func(int const &a)//参数类型不同 const修饰常量类型 
 {
 	cout<<"func(int const &a)的调用"<<endl;
 }
 int func1(int a,int b=20)//函数重载碰到默认参数时,容易出现二义性,尽量避免使用默认参数 
 {
 	cout<<"func1(int a,int b=20)的调用"<<endl; 
 }
 int func1(int a)//func1函数参数个数不同,可以重载 
 {
 	cout<<"func1(int a)的调用"<<endl; 
 }
 int main()
 {
 	int a=10; 
 	func(a);//调用无const函数,a是变量,可读可写 
 	func(10);//调用有const函数,输入了常量,只读 
	//func1(10);//报错,两个func1都可以调用,存在二义性 
	func1(10,20);//调用func1(int a,int b=20),有两个参数 
	return 0; 
 }