📜  错误:为参数提供默认参数 - C++ (1)

📅  最后修改于: 2023-12-03 14:58:15.497000             🧑  作者: Mango

错误:为参数提供默认参数 - C++

在C++中,函数可以接受参数,有时在定义函数时会给参数提供默认值。但是如果在函数定义中已经给某个参数提供了默认值,那么在调用该函数时,不能再为该参数传递值,否则会导致编译器报错“错误:为参数提供默认参数”。

报错信息

当在函数定义中给参数提供了默认值,并在函数调用时为该参数传递值,编译器会报错,如下所示:

void foo(int x = 10){
    //...
}

int main(){
    foo(20); // 错误:为参数提供默认参数
    return 0;
}
解决方法

如果需要在函数调用时为某个参数传递值,可以将函数定义中该参数的默认值去掉,如下所示:

void foo(int x){
    //...
}

int main(){
    foo(20);
    return 0;
}

或者使用函数重载的方法,在定义多个同名但参数列表不同的函数来完成该需求,如下所示:

void foo(int x){
    //...
}

void foo(){
    foo(10); // 传递默认值
}

int main(){
    foo(20);
    foo();
    return 0;
}
注意事项
  • 在函数定义时不要为参数提供默认值,除非有必要;
  • 函数调用时,不要为已经有默认值的参数传递值;
  • 如果需要在函数调用时为已有默认值的参数传递值,可以将函数定义中该参数的默认值去掉,或者使用函数重载的方法。