当前位置:   article > 正文

C语言函数下----函数重载_c语言函数重载

c语言函数重载

(一)带默认值行参数的函数

     函数在定义时可以预先声明默认的行参数。调用时如果给实参,则采用实参初始化形参,,如果没给实参,则采用预先声明的默认形参值。

注意:有默认的形参必须在形参列表的最后。即有默认值的形参右面,不能出现无默认值的形参。因为在函数调用中,实参与形参是按从左向右的顺序建立对应关系的。

例如:int add(int x=1,int y=2,int z=3);

           int add(int x=1,int y ,int z=3);×

           int add(int x=1,int y ,int z=3); ×

      默认形参值应该在函数原型中给出,例如:
      在相同的作用域内,不允许在同一个函数的多个声明中对同一个参数的默认值重复定义。即使前后定义的值相同也不行。这里作用域是指直接包含着函数原型说明的大括号所界定的范围, 注意,函数的定义也属于声明,这样,如果一个函数在定义之前又有原型声明,默认形参值需要在原型声明中给出,定义中不能再出现默认形参值。

(二)函数重载

重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个函数完成不同的功能。这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。不能只有函数返回值类型不同。

两个重载函数必须在下列一个或两个方面有所区别:

1、函数的参数个数不同。

2、函数的参数类型不同

3、参数类型顺序不同,

当将要定义一组函数,使它们执行一系列的操作,但是它们是应用在不同的参数类型上的。此时我们可以选择重载函数。

例如: int max (int,int); //返回整数的最大值;

double max (double,double); //返回两个小数的最大值;

 

  1. #include <iostream>
  2. using namespace std;
  3. //类型不同 C语言没有函数重载
  4. int Max(int a, int b)
  5. {
  6. return a > b ? a : b;
  7. }
  8. float Max(float a, float b)
  9. {
  10. return a > b ? a : b;
  11. }
  12. //顺序不同
  13. // error C2084: 函数“int Max(int,int)”已有主体
  14. //int Max(int b, int a)
  15. //{
  16. //
  17. //}
  18. void print(int a, char c)
  19. {
  20. }
  21. void print(char a, int c)
  22. {
  23. }
  24. //数目不同
  25. void print(int a, int b, int c)
  26. {
  27. }
  28. int main()
  29. {
  30. printf("%d\n", Max(1, 2));
  31. printf("%.1f\n", Max(1.1f, 2.2f)); //错误,C++对于类型要求比C语言严格
  32. 1L; //long
  33. 1.1f; //float
  34. 1u; //unsiged;
  35. //默认的小数是double;
  36. return 0;
  37. }

思考一下:

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/article/detail/52673
推荐阅读
相关标签
  

闽ICP备14008679号