请输入您要查询的百科知识:

 

词条 函数重载
释义

所谓函数重载是指同一个函数名可以对应着多个函数的实现。每种实现对应着一个函数体,这些函数的名字相同,但是函数的参数的类型不同。这就是函数重载的概念。函数重载在类和对象的应用尤其重要。

定义

概述

函数重载要求编译器能够唯一地确定调用一个函数时应执行哪个函数代码,即采用哪个函数实现。确定函数实现时,要求从函数参数的个数和类型上来区分。这就是说,进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同。否则,将无法实现重载。例如,可以给函数名add()定义多个函数实现,该函数的功能是求和,即求两个操作数的和。其中,一个函数实现是求两个int型数之和,另一个实现是求两个浮点型数之和,再一个实现是求两个复数的和。

定义

两个或两个以上的函数,具有相同的函数名,但是形参的个数或者类型不同,编译器根据实参和形参的类型及个数进行最佳匹配,自动确定调用哪个函数,这就是函数的重载。

重载

重载条件是函数的形参个数或者类型不同或者是形参的顺序不同,下面就这两种情况分别举例。

参数类型上不同的重载函数

下面举一个在参数类型不同的重载函数的例子:

#include <iostream.h>

int add(int, int);

double add(double, double);

void main()

{

cout<<add(5, 10)<<endl;

cout<<add(5.0, 10.5)<<endl;

}

int add(int x, int y)

{

return x+y;

}

double add(double a, double b)

{

return a+b;

}

该程序中,main()函数中调用相同名字add的两个函数,前边一个add()函数对应的是两个int型数求和的函数实现,而后边一个add()函数对应的是两个double型数求和的函数实现。这便是函数的重载。

以上程序输出结果为:

15

15.5

参数个数上不同的重载函数

下面举一个在参数个数上不相同的重载函数的例子:

#include <iostream>

int min(int a, int b);

int min(int a, int b, int c);

int min(int a, int b, int c, int d);

int main(void)

{

cout<<min(13, 5, 4, 9)<<endl;

cout<<min(-2, 8, 0)<<endl;

}

int min(int a, int b)

{

return a<b?a:b;

}

int min(int a, int b, int c)

{

int t = min(a, b);

return min(t,c);

}

int min(int a, int b, int c, int d)

{

int t1 = min(a, b);

int t2 = min(c, d);

return min(t1, t2);

}

该程序中出现了函数重载,函数名min对应有三个不同的实现,函数的区分依据参数个数不同,这里的三个函数实现中,参数个数分别为2,3和4,在调用函数时根据实参的个数来选取不同的函数实现。

函数重载在类和对象应用比较多,尤其是在类的多态性中。在以后我们将碰到更多的在类型不同的函数重载,尤其是在结合类的继承性和指针类型的不同,而这些都是我们以后用VC编程中经常要用到的。

注:关于重载一定要注意:重载函数的参数类型和参数个数一定要不同(即:要么参数的类型不同,要么参数的个数不同,要么参数的类型和个数都不同),否则,编译器就不知道该调用那个函数了。函数重载的概念在C++,C#中是一样的,但是语言的使用略有不同,此文中的举例代码说明了其原理。----郑力侨补充。

#include <iostream>

int min(int a, int b);

int min(int a, int b, int c);

int min(int a, int b, int c, int d);

int main(void)

{

cout<<min(13, 5, 4, 9)<<endl;

cout<<min(-2, 8, 0)<<endl;

}

int min(int a, int b)

{

return a<b?a:b;

}

int min(int a, int b, int c)

{

int t = min(a, b);

return min(t,c);

}

int min(int a, int b, int c, int d)

{

int t1 = min(a, b);

int t2 = min(c, d);

return min(t1, t2);

}

新手觉得(重载)像这样的话代码太多了点吧

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/2/27 13:14:46