这段代码有什么问题没有匹配函数来调用?

时间:2014-05-25 22:17:30

标签: c++

这段代码有什么问题? 没有用于调用fun1(z *)

的匹配函数
int  fun1(int &z)
{
return z+4;
}
int  fun2(int & z)
{
return z*3;
}
void main()
{
int b=6;
int m=fun1(fun2(b));
}

1 个答案:

答案 0 :(得分:1)

非const引用不能绑定到rvalues。换句话说,fun2返回一个临时整数,它不能用作fun1的参数,因为它需要它可以绑定的东西。将fun2的结果存储在辅助变量中,或将fun1更改为以下任一项:

int fun1(int z) // copy
int fun1(int const& z) // const ref

顺便说一下,void main不是合法的C ++。