C++——函数提高

本文介绍了函数默认参数、占位参数和函数重载的概念。默认参数允许在未提供实参时使用预设值,但应注意从有默认值的位置开始后续参数都必须有默认值。函数实现时若声明有默认参数,实现不应再重复。占位参数虽然可用但意义不大。函数重载强调同名函数在参数类型、个数或顺序上的不同,以实现不同功能。在使用默认参数时要避免在重载中引起混淆。
摘要由CSDN通过智能技术生成

函数提高


函数默认参数

  1. 未传数据,则用默认形参值,传入实参值,优先使用实参值
int func1(int a, int b = 1){
	return a+b;
}
int main(){
	cout<<func1(1,2)<<endl; //1+2=3
	cout<<func1(1)<<endl; //1+1=2
}
  1. 从有默认值的位置后,必须均有默认值
int func2(int a, int b = 1,int c = 3){
	return a+b+c;
} //right

int func2(int a, int b = 1,int c){
	return a+b+c;
} //error
  1. 声明函数时有默认参数,则实现不能有,即二者只能有一处有默认参数
int func3(int a,int b=10,int c=22);
int func3(int a, int b = 1,int c = 3){
	return a+b+c;
} //error 重定义默认参数!!

int func3(int a,int b=10,int c=22);
int func3(int a, int b,int c){
	return a+b+c;
} //right


int func3(int a,int b,int c);
int func3(int a, int b = 1,int c = 3){
	return a+b+c;
} //right

函数的占位参数

没有形参变量,只有数据类型,意义不是很大

int func(int a,int){
	return a+2;
}
func(10,10);

占位参数也可以有默认参数,就不用必须传递值

int func(int a,int = 11){
	return a+2;
}
func(10);

函数重载

同一个作用域,函数名相同但是至少满足以下三点之一:

  • 参数类型不同
  • 参数个数不同
  • 参数顺序不同
    作用:复用性更高,根据参数来判断选择哪一个函数进行调用
//同全局作用域
void func(){
	cout<<"first"<<endl;
}

void func(int a){
	cout<<"second"<<endl;
}

void func(double a){
	cout<<"third"<<endl;
}

void func(int a,double b){
	cout<<"fourth"<<endl;
}

void func(double a,int b){
	cout<<"fifth"<<endl;
}

int func(){
	cout<<"sixth"<<endl;
}//error 函数的返回值不能作为函数重载的条件

int main(){
	func();       //first
	func(1);      //second
	func(1.2);    //third
	func(1,1.2);  //fourth
	func(1.2,1);  //fifth
}

关于引用重载:

//参数类型不同
void func(int &a){
	cout<<"one"<<endl;
}

void func(const int &a){
	cout<<"two"<<endl;
}

func(10); //two

int a = 23;
func(a); //one

关于默认参数:
函数重载的时候尽量避免默认参数

void func(int a,double b = 12){
	cout<<"one"<<endl;
}

void func(int a){
	cout<<"two"<<endl;
}

func(20); //编译器傻眼了error!!

上述两个函数语法上是对的,生成是没问题的,但是一旦调用func(20),两个函数都可以调用,所以编译器懵逼了,就会报错,因此在函数重载的时候尽量避免默认参数这个坑!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Una*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值