用三元计算重载函数

时间:2014-12-25 22:17:56

标签: c++

我有一个重载函数,它可以采用两种参数类型:intdouble。当我使用可以返回intdouble的三元评估它时,它始终使用double版本。那是为什么?

#include<iostream>
using namespace std;

void f(int a)
{
    cout << "int" << endl;
}

void f(double a)
{
    cout << "double" << endl;
}

int main()
{
    string a;
    cin >> a;
    f(a=="int" ? 3 : 3.14159);
    return 0;
}

1 个答案:

答案 0 :(得分:8)

三元运算符始终进行类型提升(单一类型)。所以如果一个结果是int而另一个是double,结果是?歌剧将永远是双倍的。