函数(默认参数,int & a和const int & a之间的重载)
函数默认参数
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)被调用