什么叫函数重载

什么叫函数重载... 什么叫函数重载 展开
 我来答
忆安颜11
高粉答主

2018-10-13 · 说的都是干货,快来关注
知道小有建树答主
回答量:155
采纳率:0%
帮助的人:4.3万
展开全部

函数重载是一个同名函数完成不同的功能,编译系统在编译阶段通过函数参数个数、参数类型不同,函数的返回值来区分该调用哪一个函数,即实现的是静态的多态性。但是记住:不能仅仅通过函数返回值不同来实现函数重载。

扩展资料

重载函数的多义性无法确定,直到遇到函数调用。 此时,将为函数调用中的每个参数生成集,并且可以确定是否存在明确的重载。 这意味着,多义性可保持在您的代码中,直到它们由特定函数调用引发。

参数类型差异

重载函数区分使用不同的初始值设定项的参数类型。 因此,对于重载而言,给定类型的参数和对该类型的引用将视为相同。 由于它们采用相同的初始值设定项,因此它们被视为是相同的。 例如,max( double, double ) 被视为与 max( double &, double & ) 相同。 声明两个此类函数会导致错误。

出于同一原因,对由 const 或 volatile 修改的类型的函数参数(出于重载的目的)的处理方式与基类没有什么不同。

但是,函数重载机制可以区分由 const 和 volatile 限定的引用和对基类型的引用。

参考资料:百度百科——函数重载

Hlod猪行
2018-08-03 · TA获得超过2840个赞
知道答主
回答量:21
采纳率:0%
帮助的人:6655
展开全部

函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。重载函数通常用来命名一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处。

函数重载要求编译器能够唯一地确定调用一个函数时应执行哪个函数代码,即采用哪个函数实现。确定函数实现时,要求从函数参数的个数和类型上来区分。

拓展资料:

重载,在一个类定义中,可以编写几个同名的方法,但是只要它们的签名参数列表不同,Java就会将它们看做唯一的方法。简单的说,一个类中的方法与另一个方法同名,但是参数表不同,这种方法称之为重载方法。重载有四种形式的多态:虚函数多态、模板多态、重载与转换。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
是水颜x
2018-08-06 · TA获得超过2万个赞
知道小有建树答主
回答量:1055
采纳率:77%
帮助的人:57.3万
展开全部

重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。

这就是重载函数。

重载函数常用来实现功能类似而所处理的数据类型不同的问题。

但是重载函数的返回值类型可以不同。

扩展资料:

重载函数(overloaded function)是C++支持的一种特殊函数,C++编译器对函数重载的判断更是C++语言中极为复杂的内容之一。

首先我们先明确一下重载函数的定义:在相同的声明域中的函数名相同的,而参数表不同的,即通过函数的参数表而唯一标识并且来区分函数的一种特殊的函数。

百度百科,函数重载。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
如花和里森
2010-12-11 · TA获得超过399个赞
知道答主
回答量:22
采纳率:0%
帮助的人:23.1万
展开全部
麻烦?看来你不懂重载,重载是为了减少麻烦才产生的。
打个比方,你为了要计算两个数的和,写了一个函数,如下:
int intSum(int nA,int nB)
{
return (nA+nB);
}
这个只是计算了两个整形的和,或许你还要写一个计算浮点数和的函数:
float floatSum(float fA,float fB)
{
return (fA+fB);
}
或许你还需要计算一个浮点数和一个整形的和,还需要一个函数:
float float_intSum(float fA,int nB)
{
return (fA+(float)nB);
}
甚至,如果你用C++的话,你还会需要一些计算对象之间的和,等等。。。。
当写了这么多的函数,在实际运用中根据需要选择不同的函数来计算某些类型的和,我想你也记不住这么多函数。用重载吧,只需要记住一个函数名就行了。
/////////////////////////////////////////////////////////////////////////////
//函数Fun_Sum的重载

int Fun_Sum(int A,int B)
{
return (A+B);
}
float Fun_Sum(float A,float B)
{
return (A+B);
}
double Fun_Sum(double A,double B)
{
return (A+B);
}
UINT Fun_Sum(UINT A,UINT B)
{
return (A+B);
}
//等等,可以的话这种重载写数十个也不会重复。
//好了,以后你想要计算某两个类型的和时(可以是不同类型),不需要去想该用哪个计算和的函数,统统调用函数Fun_Sum就行了,至于到底是其中的哪一个函数在被调用,让编译器去伤脑筋吧。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
白马相思白发生b
2010-12-11 · TA获得超过1752个赞
知道小有建树答主
回答量:735
采纳率:0%
帮助的人:915万
展开全部
void fun(int x);
void fun(float x);
void fun(float x,int y);
这就是函数重载,参数不一样,但是函数名一样,但是不能返回值不一样~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式