c++学习笔记(十一)
函数重载(overloading)
概念
重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个函数完成不同的功能。这就是重载函数。
重载函数常用来实现功能类似而所处理的数据类型不同的问题。不能只有函数返回值类型不同。
理解:就是有多个同名函数,但是它们的参数列表不同。
形式
如
void fun(int );
void fun(float,float);
虽然我们打的代码命名相同,但是编译器会在编译时会它们加上特征标进行重命名。
上面的例子在会在编译时重命名为:
fun_int(int );
fun_float_float(float ,float);
这就是重载函数的原理。
所以在编译器编译时会先把重载函数们重命名。
这个就叫做重载决议。
用处:
函数重载因为系统的自动匹配功能所以可以解决多种数据类型的计算,可以用于解决预设函数太多,调用时较为麻烦,不好调用等问题。
注意
一个例子:
void fun(int a);
void fun(int& ra);
这两个传进来的参数是完全一致的,因为引用相等于本体,所以编译器会报错,这种不能说是重载函数。
默认参数
概念:
默认参数指的是当函数调用中省略了实参时自动使用的一个值。例如,如果将void wow(int n)设置成n有默认值为1,则函数调用wow()相当于wow(1)。这极大地提高了使用函数的灵活性。
用法
void fun(int a=1, int b=3, int c=5);
在声明时这样,引用这个函数时你不给它参数它就会使用默认参数。
注意:
1.默认参数只可在函数声明中设定一次。只有在无函数声明时,才可以在函数定义中设定。
2.默认参数定义的顺序为自右到左。即如果一个参数设定了缺省值时,其右边的参数都要有缺省值。
3.默认参数调用时,则遵循参数调用顺序,自左到右逐个调用。这一点要与第2点分清楚,不要混淆。