原理是因为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

相关推荐

飞屋一号:包住还有每工作日餐补,已经比很多公司的实习强了吧
点赞 评论 收藏
分享
牛客41406533...:回答他在课上学,一辈子待在学校的老教授用三十年前的祖传PPT一字一句的讲解,使用谭浩强红皮书作为教材在devc++里面敲出a+++++a的瞬间爆出114514个编译错误来学这样才显得专业
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务