重载函数是什么意思?
刚刚学会了简单的函数调用,书上又说函数重载,小弟就犯愁了,想做个例子出来,未能成功!大家能否详细说下,小弟理解能力差,望通俗点讲,或者贴个例子出来?谢谢了!...
刚刚学会了简单的函数调用,书上又说函数重载,小弟就犯愁了,想做个例子出来,未能成功!大家能否详细说下,小弟理解能力差,望通俗点讲,或者贴个例子出来?谢谢了!
展开
5个回答
展开全部
class BasketballPlayer{
private String sex;
private String name;
public void test (String name){
......}
public void test (String name,String sex){
......}
}
就是一个类里面定义了几个相同名字但不同参数的函数(方法)。不过我个人感觉有些时候这个功能比较鸡肋,我还不如像下面那样写简单省事,可惜下面这种写法在JAVA里面用不了,还好在我喜欢的C/C++和PHP中都支持:
class BasketballPlayer{
private String sex;
private String name;
public void test (String name,String sex="man"){
......}
}
当然它也有实用的时候,比如:
int max(int a,int b){
return a>b? a : b;
}
float max(float a, float b){
return a>b? a : b;
}
不过我还是觉得这个不是一个好办法,相同的功能只是不同数据类型就要写那么多遍逻辑完全相同的东西,就是浪费体力啊,要修改还得一个个改,说不定就改漏了。我想可能弱数据类型(比如PHP)是一个更好的解决方案,它自动帮你搞定不同的数据类型了。如下:
<?php
function themax($a,$b){ //max是系统函数不能用了,所以起名叫themax
return $a>$b ? $a : $b;
}
?>
2013-07-26
展开全部
方法名称和返回类型一样,不过就是参数不一样,通过你调用方法传入的参数个数或者类型程序自动去调用对应的方法。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-26
展开全部
private String testA(String val) {
// 代码略
}
private String testA(String val,String val2) {
// 代码略
}
private String testA(int val) {
// 代码略
}
上面的都属于重载,方法名相同,参数个数或者类型不同,就是重载。
// 代码略
}
private String testA(String val,String val2) {
// 代码略
}
private String testA(int val) {
// 代码略
}
上面的都属于重载,方法名相同,参数个数或者类型不同,就是重载。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。
重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。
重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-26
展开全部
所谓函数重载是指同一个函数名可以对应着多个函数的实现。例如,可以给函数名add()定义多个函数实现,该函数的功能是求和,即求两个操作数的和。其中,一个函数实现是求两个int型数之和,另一个实现是求两个浮点型数之和,再一个实现是求两个复数的和。每种实现对应着一个函数体,这些函数的名字相同,但是函数的参数的类型不同。这就是函数重载的概念。函数重载在类和对象的应用尤其重要。
函数重载要求编译器能够唯一地确定调用一个函数时应执行哪个函数代码,即采用哪个函数实现。确定函数实现时,要求从函数参数的个数和类型上来区分。这就是说,进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同。否则,将无法实现重载。
参数类型上不同的重载函数
下面举一个在参数类型不同的重载函数的例子:
#include <iostream.h>
int add(int, int);
double add(double, double);
void main()
{
cout<<add(5, 10)<<endl;
cout<<add(5.0, 10.5)<<endl;
}
int add(int x, int y)
{
return x+y;
}
double add(double a, double b)
{
return a+b;
}
该程序中,main()函数中调用相同名字add的两个函数,前边一个add()函数对应的是两个int型数求和的函数实现,而后边一个add()函数对应的是两个double型数求和的函数实现。这便是函数的重载。
以上程序输出结果为:
15
15.5
参数个数上不同的重载函数
下面举一个在参数个数上不相同的重载函数的例子:
#include <iostream.h>
int min(int a, int b);
int min(int a, int b, int c);
int min(int a, int b, int c, int d);
void main()
{
cout<<min(13, 5, 4, 9)<<endl;
cout<<min(-2, 8, 0)<<endl;
}
int min(int a, int b)
{
return a<b?a:b;
}
int min(int a, int b, int c)
{
int t = min(a, b);
return min(t,c);
}
int min(int a, int b, int c, int d)
{
int t1 = min(a, b);
int t2 = min(c, d);
return min(t1, t2);
}
函数重载要求编译器能够唯一地确定调用一个函数时应执行哪个函数代码,即采用哪个函数实现。确定函数实现时,要求从函数参数的个数和类型上来区分。这就是说,进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同。否则,将无法实现重载。
参数类型上不同的重载函数
下面举一个在参数类型不同的重载函数的例子:
#include <iostream.h>
int add(int, int);
double add(double, double);
void main()
{
cout<<add(5, 10)<<endl;
cout<<add(5.0, 10.5)<<endl;
}
int add(int x, int y)
{
return x+y;
}
double add(double a, double b)
{
return a+b;
}
该程序中,main()函数中调用相同名字add的两个函数,前边一个add()函数对应的是两个int型数求和的函数实现,而后边一个add()函数对应的是两个double型数求和的函数实现。这便是函数的重载。
以上程序输出结果为:
15
15.5
参数个数上不同的重载函数
下面举一个在参数个数上不相同的重载函数的例子:
#include <iostream.h>
int min(int a, int b);
int min(int a, int b, int c);
int min(int a, int b, int c, int d);
void main()
{
cout<<min(13, 5, 4, 9)<<endl;
cout<<min(-2, 8, 0)<<endl;
}
int min(int a, int b)
{
return a<b?a:b;
}
int min(int a, int b, int c)
{
int t = min(a, b);
return min(t,c);
}
int min(int a, int b, int c, int d)
{
int t1 = min(a, b);
int t2 = min(c, d);
return min(t1, t2);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询