14_详解函数的默认(缺省)参数

1、缺省参数概述

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

//函数的默认参数 指定x的默认值为10 y为20
int my_add(int x=10,int y=20)
{
    return x+y;
}
void test02()
{
    //如果函数传参 那么各自的默认参数将无效
    cout<<"my_add = "<<my_add(100,200)<<endl;//300

    //如果某个参数未被传参 将启用默认值x=100 y使用默认值20
    cout<<"my_add = "<<my_add(100)<<endl;//120

    //x=10  y=20
    cout<<"my_add = "<<my_add()<<endl;//30
}

2、注意:

1、函数的默认参数从左向右,如果一个参数设置了默认参数,那么这个参数之后的参数都必须设置默认参数

//函数的默认参数从左向右
int func01(int x,int y=20,int z=30)
{
    return x+y+z;
}
void test03()
{
    cout<<func01(100,200)<<endl;//330
    cout<<func01(100)<<endl;//150
    //cout<<func01()<<endl;//err x没有设置默认参数 必须传参
}

2、如果函数声明和函数定义分开写,函数声明和函数定义不能同时设置默认参数

建议:函数声明出设置缺省参数

fun.cpp

int func02(int x,int y,int z)
{
    return x+y+z;
}

main.cpp

//分文件 函数定义处的默认参数 是无效的
//建议:分文件是 在声明 给默认参数
extern int func02(int x,int y=25,int z=35);
//extern int func02(int x,int y,int z);//err
void test04()
{
    cout<<func02(100,200)<<endl;//335
    cout<<func02(100)<<endl;//160
}

3、占位参数

函数的参数只有类型名 没有形参名,这个参数就是占位参数

由于有类型名 所以 函数调用的时候 必须给占位参数传参。

由于没有形参名 所以 函数内部 是无法使用占位参数。

void func03(int x,int y,int)
{
    cout<<"x = "<<x<<", y = "<<y<<endl;
    return;
}
void test05()
{
    //func03(10,30,"hehe");//err "hehe"和int类型不符
    func03(10,30,40);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值