C++带默认参数的函数

带默认参数的函数在调用时,可以不给有默认值的参数传参, 编译器会自动使用默认值, 使用默认参数定义函数需要注意两点:

1,函数的某个位置的参数使用了默认参数, 则该参数后, 从左至右的所有参数必须给出默认参数, 否则报错:Miss default argument on parameter 'paramName'

2,对于函数的某个默认参数初始值的设置要么在函数声明中给出, 要么在函数定义中给出, 不能即在函数声明给出, 又在函数定义中给出, 否则报错:Redefinition of default arguent 

#include<iostream>

using namespace std;

/**
 * 带有默认参数的函数, 若函数的某些参数具有默认值, 则调用该函数时, 可以不给这些参数传参数, 而使用默认值
 *
 * @param a 参数a
 * @param b 参数b, 默认值为54
 * @param c 参数c, 默认值为12
 * @return 参数a, b, c之和
 */
int add1(int a, int b = 54, int c = 12) {
    return a + b + c;
}

/**
 * 使用带默认参数的函数的注意事项
 * 1,若函数的某个位置使用了默认参数, 则该位置之后, 从左至右的所有参数必须定义默认参数, 否则报错
 * 形如:Missing default argument on parameter 'b'
 * 2,函数的声明和定义中对于参数的默认值只能存在一次,否则报错
 * 形如:Redefinition of default argument
 */
/*int add2(int a = 10, int b, int c){
    return a + b + c;
}*/
int add2(int a, int b = 10, int c = 20);

int add2(int a = 0, int b, int c) {
    return a + b + c;
}

/*int add2(int a = 0, int b =12, int c) {
    return a + b + c;
}*/

int main() {
    //call function "add1"
    cout << "call add1(10) and result is " << add1(10) << endl;

    cout << "call add1(10,20) and result is " << add1(10,20) << endl;
    system("pause");

    return 0;
}

 

posted @ 2020-08-08 16:48  DNoSay  阅读(1482)  评论(0)    收藏  举报