函数提高

函数的默认参数

int func(int a, int b=20, int c=30)
{
    return a + b + c;
}

int main()
{
    cout << func(10) <<endl;//默认b=20, c=30
    cout << func(10, 30)<<endl; //b=30, 默认c=30
    //如果我们传了数据,则用我们传入的数据
    //如果我们没传,则用默认值
}

//注意点
	//1.如果某个位置有了默认参数,则从这个位置往后,都必须有默认参数
	int func2(int a, int b=10 , int c) // 错误, c必须有默认参数
     //2. 如果函数的声明有了默认参数,函数的实现不能有默认参数
     //声明和实现只能有一个有默认参数
     int func3(int a=10, int b=10);
     int func3(int a=10, int b=10)//重定义的默认参数
     {
         return a+b;
     }

函数的占位参数

//函数占位参数,占位参数可以有数据类型

void func(int a, int){}
//占位参数可以有默认参数
void func2(int a, int =10){}
    
int main()
{
    func(10);//不允许,不满足占位参数要求
    func(10, 10)//允许,补全了占位参数
    func2(10)//允许,默认参数
    return 0;
}

函数重载

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

  • 同一个作用域下
  • 函数名称相同
  • 函数参数类型不同或个数不同,顺序不同
void fun()
{
    cout << "func" << endl;
}

void fun(int a)
{
    cout << a << endl;
}

void fun(double a)
{
    cout << "double a" << endl;
}
int main()
{
    func(); // "func"
    func(2); // "2"
    func(3.14); // "doouble 3.14"
    return 0;
}

注意

//引用作为重载的条件

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

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

//函数重载遇到默认参数
void func2(int a)
{
    cout << "a" << endl;
}

void func2(int a, int b=10)
{
    cout << "a, b" << endl;
}

int main ()
{
    int a = 10;
    func(a); // "10"
    const int a = 10;
    func(a); // "const 10"
    
    int a = 10;
    int b = 10;
    func2(a);//二义性
    func2(a, b);// "10, 10"
	return 0;        
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值