函数的重载---c++面向对象程序设计(清华大学出版社)----凌风

 在前面的程序中用到了插入运算符“<<”和提取运算符“>>”。这两个运算符是c和c++位运算中的左移运算符和右移运算符,现在c++又把它作为输入输出运算符。即允许一个运算符用于不同场合,有不同的含义,这就叫做运算符的“重载”(overloding),即重新赋予它新的含义,其实就是“一物多用”。

 在c++中,函数也可以重载。用c语言编程时,有时会发现几个不同名的函数实现的是同一类的操作。例如要求从3个数中找出其中的最大者,而这三个数的关系事先不确定,可以是整型、实型或长整型。在写c语言程序时,需要分别设计出3个函数,其原型为

  int max1(int a ,int b,int c)(求3个整数中的最大者)

  int max2(float a,float b,float c) (求3个实数中的最大者)

  int max3(long a,long b,long c)   (求3个长整型中的最大者)

 

  C语言规定在同一作用域(例如同一个文件模块中)不能有同名的函数,因此3个函数的名字不相同。

 

  c++允许在同一作用域中用同意函数名定义多个函数,这些函数的参数个数和参数类型不相同,这些同名的函数用来实现不同的功能。这就是函数的重载,即一个函数多次使用。

   对上面的问题可以编写如下的c++程序

 

例子:求三个数中最大的数(分别考虑整数、实数、长整型的情况)

 

 

  #include<iostream>

  using namespace std;

  int max(int a,int b,int c)         //求3个整数中的最大者

  {  if(b>a)a=b;

      if(c>a)a=c;

      return a;

  }

 

  float max(float a,float b,float c)    //求3个实数中的最大者

  {if(b>a)a=b;

    if(c>a)a=c;

    return a;

  }

 

  long max(long a,long b,long c)    //求3个长整数中的最大者

  {if(b>a)a=b;

    if(c>a)a=c;

    retrun a;

   }

 

  int main()

  {int a,b,c;float d,e,f;long g,h,i;

    cin>>a>>b>>c;

    cin>>d>>e>>f;

    cin>>g>>h>>i;

     int m;

     m=max(a,b,c);
     cout<<"max_i="<<m<<endl;
   
     float n;
     n=max(d,e,f);
     cout<<"max_f="<<n<<endl;
    
    long int p
    p=max(a,b,c);
   cout<<"max_1"<<p<<endl;
   return 0;
  }
运行情况略
main函数3次调用max函数,每次实参的类型不同。系统会根据实参的类型找到与之匹配的函数,然后调用该函数。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值