-1

我想知道程序员是否必须为重载函数编写不同的调用,那么为什么程序员不应该为调用函数使用不同的名称。例如。使用函数重载的区域函数是

area(int a){ cout<< " area of square"<< a*a; }

area( int a, int b) { cout<< " area of rectangle"<< a*b; }

我可以编写 areaSquare 和 areaRectangle,而不是上面的重载函数。

那么为什么我们需要函数重载。

4

2 回答 2

1

因为有时很难为单个操作找到许多不同的有意义的名称。

例如,想想 function abs,你真的想要这个:

int    abs_int   (int    x);
float  abs_float (float  x);
double abs_double(double x);

或这个:

int    abs(int    x);
float  abs(float  x);
double abs(double x);

这取决于你,选择其中之一。

于 2013-05-25T09:35:01.157 回答
0

对于自然主义。

函数重载可以是面向对象编程的一个方便和直观的特性。如果你想找出三角形的面积,至少需要三个测量值(除了只给出所有三个角度)来找出它的面积。

在这种情况下,您是否觉得为具有不同参数的方法使用不同的名称是很自然的,所有这些方法都具有返回其区域的相同目标?不。

给定三个方面:

public static double getTriangleArea(int sideA,int sideB,int sideC){
                   //abstract it..
                   return area;
       }

给定 2 条边和它们之间的角度:

public static double getTriangleArea(int sideA,int sideB,double angleAB){
                          //abstract it..
                       return area;
}

编辑: 由于hvd的评论,一个更好的例子

public double getDouble(String doubleString){
              //abstract it
               return doubleValue;
}



 public double getDouble(int input){

              return getDouble((Integer)input);
}

public double getDouble(float input){

              return getDouble((Float)input);
}
//etc...

一切顺利。

于 2013-05-25T09:43:29.800 回答