天天看点

C++ 核心 3. 函数进阶3 函数进阶

3 函数进阶

3.1 默认参数

语法:

返回值类型 函数名(参数=默认值){}
           

e:

int func(int a, int b=10, int c=100){
    return a+b+c;
}
           

注意事项:

1.默认参数应该在非默认参数后面。

错误示范:

int func(int a, int b=10 ,int c)

2.函数声明和实现分开时,函数声明和函数实现只能有一个有默认参数。(防止声明和实现的默认参数值不一致,冲突)

int func2(int a=10, int b=10);

int func2(int a, int b){
    return a + b;
}
           

3.2 函数占位参数

函数参数只写数据类型,不写参数名:

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

现阶段用不到,(这个没名字的参数怎么用呢?),后面会用到。

3.3 函数重载

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

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

函数重载注意事项

  • 引用作为重载条件
void func(int &a){
    cout << "func1"<< endl;;
}

void func(const int &a){
    cout << "func2"<< endl;;
}
           
  • 函数重载与默认参数
void func(int a){
    cout << "func1"<< endl;;
}

void func(int a, int b=10){
    cout << "func2"<< endl;;
}
//不行,如果调用
func(10);// wrong, 无法决定使用哪个函数。

func(1,2) // right,只能使用第二个参数。
           

继续阅读