原理是因为int&会被隐式转换成float&&,而float&会被隐式转换成int&&。 #include <iostream> using namespace std; void f(int&& ) { cout << "int"; } void f(float&&) { cout << "float"; } void p(int &x) { f(x); } void p(float &x) { f(x); } int main() { float x=1.0; int y=2; p(x); p(y); } 至于为什么会这么转换,我个人认为可能是bug。
15 4

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务