(┭┮﹏┭┮大一写的小水文,先放着摆个位置)

🌈函数默认参数

  • 在C++中,函数的形参列表中的形参是可以有默认值
  • 语法 :返回值类型 函数名(行参=默认值){ }
  • 注意:1.如果某个位置已经有了默认参数,那么这个位置后面都必须有默认值 2.如果函数声明有默认参数,函数实现就不能有默认参数;反之,实现有了,默认就不能有
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#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;
}

🌈函数的占位参数

  • 函数的形参列表里可以有占位参数,用来做占位,调用函数时必须填补该位置
  • 可以有默认参数
  • 语法:返回值类型 函数名 (数据类型){ }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #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;
    }

🌈函数重载

  • 作用:函数名相同,提高复用性
  • 条件同一作用域函数名相同函数参数类型不同个数不同顺序不同
  • 注意函数的返回值不可以作为函数重载的条件
  • 引用也可以作为函数重载的条件
  • 函数重载尽量避免使用默认参数,容易出现二义性
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    #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;
    }