我想知道程序员是否必须为重载函数编写不同的调用,那么为什么程序员不应该为调用函数使用不同的名称。例如。使用函数重载的区域函数是
area(int a){ cout<< " area of square"<< a*a; }
area( int a, int b) { cout<< " area of rectangle"<< a*b; }
我可以编写 areaSquare 和 areaRectangle,而不是上面的重载函数。
那么为什么我们需要函数重载。
因为有时很难为单个操作找到许多不同的有意义的名称。
例如,想想 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);
这取决于你,选择其中之一。
对于自然主义。
函数重载可以是面向对象编程的一个方便和直观的特性。如果你想找出三角形的面积,至少需要三个测量值(除了只给出所有三个角度)来找出它的面积。
在这种情况下,您是否觉得为具有不同参数的方法使用不同的名称是很自然的,所有这些方法都具有返回其区域的相同目标?不。
给定三个方面:
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...
一切顺利。