c++ - 用三元计算的重载函数

标签 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;
}

最佳答案

三元运算符总是进行类型提升(转换为单一类型)。因此,如果一个结果是 int 而另一个是 double,结果 ?运算符将始终为 double。

关于c++ - 用三元计算的重载函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27651159/

相关文章:

c++ - 使用 __gnu_pbds 为多重集排序统计树

c++ - 在点云库中使用快速双边滤波器

c++ - CString 作为返回值

c++ - 相同的 C++ 代码,不同的链接选项会导致不同的行为?

c++ - 包含jsoncpp后编译错误

c++ - 在 Boost 多索引容器中搜索位域数据

c++ - 输出吐出两个额外的控制字符,可能是内存损坏错误?

c++ - 从C++中的变量打印文件路径

c++ - 将值传递给 main(int, char**)

c++ - 返回 std::tuple 并 move 语义/复制省略