一. 缺省参数
1.什么是缺省参数
缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实 参则采用该形参的缺省值,否则使用指定的实参。
例:
void fun(int a = 0) //缺省值为0;
{
cout << a << endl;
}
int main()
{
fun(); //没有指定实参 使用缺省值。
fun(5); //指定实参为5 不使用缺省值。
return 0;
}
结果为:
2.缺省参数的分类
缺省参数共分为两类:全缺省参数和半缺省参数。
全缺省参数:函数的所有形参都有指定的缺省值。
半缺省参数:函数只有一部分形参有指定的缺省值。
(1)全缺省参数:
void Func(int a = 10, int b = 20, int c = 30)
{
cout<< a <<endl;
cout<< b <<endl;
cout<< c <<endl;
}
(2)半缺省参数:
void Func(int a, int b = 20, int c = 30)
{
cout<< a <<endl;
cout<< b <<endl;
cout<< c <<endl;
}
注意:
1.半缺省参数必须从左往右依次给出,不能间隔给。
如这样就是错误的:
void Func(int a = 10, int b, int c = 30) { cout<< a <<endl; cout<< b <<endl; cout<< c <<endl; }
2.缺省参数不能在函数声明和定义中同时出现。如果两个位置的缺省值不同,编译器就无法判断该使用哪个缺省值。 一般在函数声明中给出。
3.缺省值必须是常量或全局变量。
4.C语言中不支持缺省参数。
二.函数重载
1.函数重载的概念
函数重载: 是函数的一种特殊情况, C++ 允许在 同一作用域中 声明几个功能类似 的同名函数 ,这 些同名函数的形参列表 ( 参数个数 或 类型 或 类型顺序 ) 不同 ,常用来处理实现功能类似数据类型 不同的问题。
2.函数重载的类型
函数重载有三种类型,分别为:参数类型不同,参数个数不同,参数类型顺序不同。
//1.参数类型不同
int Add(int a, int b)
{
cout << "int add(int a, int b)" << endl;
return a + b;
}
double Add(double a, double b)
{
cout << "double add(double a, double b)" << endl;
return a + b;
}
//2.参数个数不同
void f()
{
cout << "f()" << endl;
}
void f(int a)
{
cout << "f(int a)" << endl;
}
//3.参数类型顺序不同
void f(int a, char b)
{
cout << "f(int a,char b)" << endl;
}
void f(char b, int a)
{
cout << "f(char b, int a)" << endl;
}
int main()
{
Add(10, 20);
Add(10.1, 20.2);
f();
f(10);
f(10, 'a');
f('a', 10);
return 0;
}
结果:
注意:如果两个函数的函数名和参数是一样的,但是返回值不同是不构成重载的。因为编译器无法区分。
三.总结
1.缺省参数的概念。
2.缺省参数非为全缺省和半缺省
3.缺省参数一般在函数声明中定义。
4.函数重载的概念。
5.函数重载的三种方式。