1. 函数默认参数

    int fun(int a=10)
    {
    	return a;
    }
    int a=fun();
    cout<<a<<endl;//10
    //注意事项:
    //1.如果某个位置有了默认参数,那么从这个位置往后,都必须有默认值
    //2.如果函数的声明有默认参数,函数实现就不能有默认参数

2. 函数占位参数

    //函数形参中可以有占位参数,调用函数时必须填补该位置
    void func(int a,int){
    	cout<<"hhh"<<endl;
    }
    func(10,20);
    
    //占位参数可以有默认参数
    void func(int a,int =10){}

3. 函数重载

    //重载条件:
    //1.同一个作用域
    //2.函数名称相同
    //3.函数参数类型不同或个数不同或顺序不同
    //4.函数返回值不作为函数重载的条件
    void func()
    {
    	cout<<"hhh"<<endl;
    }
    
    void func(int a)
    {}
    
    func();//调用第一个
    
    //引用作为重载的条件
    void func(int &a){}
    void func(const int &a){}
    
    func(a);//调用第一个
    func(10);//调用第二个
    
    //函数重载碰到默认参数
    void func(int a){}
    void func(int a,int b=10){}
    func(10);//报错,不知道要调哪一个,二义性