13.9 c++ 函数的默认参数&13.10 c++ 占位参数

13.9 函数的默认参数

c++在声明函数原型的时侯可为一个或者多个参数指定默认(缺省)的参数值,当函数调用的时候如果没有指定这个值,编译器会自动用默认值代替。

void TestFunc01(int a = 10, int b = 20)
{
	cout<<"a + b = "<<a+b<<endl;
}
//注意点:
//1. 形参b设置默认参数值,那么后面位置的形参c也需要设置默认参数
void TestFunc02(int a,int b = 10,int c = 20){}
//2. 如果函数声明和函数定义分开,函数声明设置了默认参数,函数定义不能再设置默认参数
void TestFunc03(int a = 0, int b = 0);
void TestFunc03(int a,int b){
    
}
int main(){
	//1. 如果没有传参数,那么使用默认参数
    TestFunc01();
    //2. 如果传一个参数,那么第二个参数使用默认参数
    TestFunc01(100);
    //3. 如果传入两个参数,那么两个参数都使用我们传入的参数
    TestFunc01(100,200);
    return 0;
}

判断以下默认参数设置是否正确:

int func(int a, int b, int c=10);//正确
int func(int a, int b = 20,int c);//错误 c必须默认参数
int func(int a = 10,int b, int c);//错误 b c必须默认参数
int func(int a, int b=10, int c=20);//正确
int func(int a=10,int b,int c=20);//错误 b必须默认参数
int func(int a=10,int b=20,int c=20);//正确

默认参数和函数重载同时出现 一定要注意二义性

void func(int x)
{
	cout<<"A:int x="<<x<<endl;
}
void func(int x,int y=10)
{
	cout<<"B:int x="<<x<<" y="<<y<<endl;
}
int main()
{
	func(10,20);//ok
	func(20);//err 产生二义性
}

13.10 占位参数

c++在声明函数时,可以设置占位参数。占位参数只有参数类型,而没有参数名。一般情况下,在函数内部无法使用占位参数。

void TestFunc01(int a,int b,int){
	//函数内部无法使用占位参数
	cout<<"a + b = "<<a+b<<endl;
}
//占位参数也可以设置默认值
void TestFunc02(int a,int b,int = 20){
	//函数内部依旧无法使用占位参数
	cout<<"a+b="<<a+b<<endl;
}
int main(){
	//错误调用,占位参数也是参数,必须传参数
    //TestFunc01(10,20);
    //正确调用
    TestFunc01(10,20,30);
    //正确调用
    TestFunc02(10,20);
    //正确调用
    TestFunc02(10,20,30);
    return 0;
}

什么时候用,在后面我们要讲的操作符重载的后置++要用到这个。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值