您的位置:首页 > 编程语言 > C语言/C++

[c/c++] "? :" 在何种状况下不能修改为"if (..) {..} else {..}"?

2007-10-22 13:32 435 查看

#include <iostream>




using namespace std;




void f(double)




...{


cout << "double" << endl;


}




void f(int)




...{


cout << "int" << endl;


}




int main()




...{


f(true ? 1 : 1.0);


if(true)




...{


f(1);


}


else




...{


f(1.0);


}


}


//输出


//double


//int

"当以“f(true ? 1 : 1.0);”的形式调用式,f的实参是表达式“true ? 1 : 1.0”,C/C++语言中,一个表达式不可能同 时有两种类型,所有,f的调用必将绑定到一个确定的重载上去。而第二种情况中,if和else分支中的两次调用,按照C++语言的重载解析规则,显然是不 一样的,是实实在在的两种情况。"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐