函数默认参数

C++有这个特性,JAVA没有

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

声明和实现只能有一个默认参数

//正确的书写
int func(int, int, int);
int func(int a, int b = 10, int c = 20) {
    return a+b+c;
}

//正确的书写
int func(int a, int b, int c);
int func(int a, int b = 10, int c = 20) {
    return a+b+c;
}

//错误的书写
int func(int a, int b = 10, int c = 20);
int func(int a, int b = 10, int c = 20) {
    return a+b+c;
}

//错误的书写
int func(int a, int b = 1, int c = 2);
int func(int a, int b = 10, int c = 20) {
    return a+b+c;
}

引用作为重载的条件

void func(int &a) { // int &a = 10; // 不合法,引用变量必须赋初值且指向一处内存空间
    cout << "void func(int &a)被调用" << endl;
}

void func(const int &a) { // 只读,所以func(a)没有func(10)适配
    cout << "void func(const int &a)被调用" << endl;
}

int a = 10;
func(a); // void func(int &a)被调用
func(10); // void func(const int &a)被调用

标签: none

添加新评论