C++中,引用作为函数形参时的问题

有以下两个函数,分别是求两个数中的最大值和3个数中的最大值,二者都使用引用作为形参,并且后面的函数调用了前面的函数。floatmax(float&m,float&n){i... 有以下两个函数,分别是求两个数中的最大值和3个数中的最大值,二者都使用引用作为形参,并且后面的函数调用了前面的函数。
float max(float &m,float &n)
{
if(m>=n)
return m;
else
return n;
}
float max(float &x,float &y,float &z)
{
return max(max(x,y),z);
}
为什么第二个函数会报错:error C2665: 'max' : none of the 2 overloads can convert parameter 1 from type 'float'

好像是说第一个参数变成了实型,而不是实型的引用。但是如果将第二个函数改成下面的形式,就可以了:
float max(float &x,float &y,float &z)
{
float t=max(x,y);
return max(t,z);
}
这是为什么?
展开
 我来答
roaming_sheep
2012-03-21 · TA获得超过699个赞
知道小有建树答主
回答量:589
采纳率:0%
帮助的人:706万
展开全部
max(x,y) 的返回值是个临时变量,不能被用在按引用传递的参数上……

你的这两个函数都不会改动参数的值,何必按引用传递?
追问
非常感谢!
如果将max的形参改成float型,如下:
float max(float m,float n)
{
if(m>=n)
return m;
else
return n;
}
那么在调用时就可以用return max(max(x,y),z);的形式了是吗?
也就是说函数返回的临时变量不能传递给引用,但可以传递给具体的对象?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式