1.所谓函数的重载是指完成不同功能的函数可以具有相同的函数名。

    • C++编译器根据函数的实参来确定应该调用哪一个函数
    • 例:
      1. int fun(int a, int b)
      2. {
      3. return a+b;
      4. }
      5. int fun (int a)
      6. {
      7. return a*a;
      8. }
      9. void main(void)
      10. {
      11. cout<<fun(3,5)<<endl;
      12. cout<<fun(5)<<endl;
      13. }

    2.定义的重载函数必须有不同的参数个数,或不同的参数类型(不同的参数顺序)。只有这样编译系统才有可能根据不同的参数取调用不同的重载函数。

    3.仅返回值不同时,不能定义为重载函数。仅函数的类型不同,不能定义为重载函数

    4.重载函数不要求函数体相同。

    5.例:求3个数中最大值(分别考虑整数、双精度数、长整数情况)

    1. #include <iostream>
    2. using namespace std;
    3. int main( )
    4. {
    5. int max(int a,int b,int c); //函数声明
    6. double max(double a,double b,double c); //函数声明
    7. long max(long a,long b,long c); //函数声明
    8. int i1,i2,i3,i; cin>>i1>>i2>>i3; //输入3个整数
    9. i=max(i1,i2,i3); //求3个整数中的最大者
    10. cout<<″i_max=″<<i<<endl;
    11. double d1,d2,d3,d;
    12. cin>>d1>>d2>>d3; //输入3个双精度数
    13. d=max(d1,d2,d3); //求3个双精度数中的最大者
    14. cout<<″d_max=″<<d<<endl;
    15. long g1,g2,g3,g;
    16. cin>>g1>>g2>>g3; //输入3个长整数
    17. g=max(g1,g2,g3); //求3个长整数中的最大者
    18. cout<<″g_max=″<<g<<endl;
    19. }
    20. int max(int a,int b,int c) //定义求3个整数中的最大者的函数
    21. {
    22. if(b>a) a=b;
    23. if(c>a) a=c;
    24. return a;
    25. }
    26. double max(double a,double b,double c) //定义求3个双精度数中的最大 者的函数
    27. {
    28. if(b>a) a=b;
    29. if(c>a) a=c;
    30. return a;
    31. }
    32. long max(long a,long b,long c) //定义求3个长整数中的最大者的函 数
    33. {
    34. if(b>a) a=b;
    35. if(c>a) a=c;
    36. return a;
    37. }
    • 运行情况如下:

    185 -76 567↙ (输入3个整数)
    186 i_max=567 (输出3个整数的最大值)
    56.87 90.23 -3214.78↙ (输入3个实数)
    d_max=90.23 (输出3个双精度数的最大值)
    67854 -912456 673456↙ (输入3个长整数)
    g_max=673456 (输出3个长整数的最大值)