C++类型定义不清楚

Mud*_*rma 6 c++ types

在下面的C++代码中是什么double (*) double意思?它是什么样的返回类型?

auto get_fun(int arg) -> double (*)(double) // same as: double (*get_fun(int))(double)
{
    switch (arg)
    {
        case 1: return std::fabs;
        case 2: return std::sin;
        default: return std::cos;
    }
}
Run Code Online (Sandbox Code Playgroud)

fre*_*ish 7

double (*)(double)它是一个函数的函数指针签名,它接受一个double参数并返回double.通常

X (*)(A, B, C)  // any number of args
Run Code Online (Sandbox Code Playgroud)

是一个指向函数的指针,它接受类型的args (A, B, C)并返回类型的值X,例如

X my_func(A, B, C) {
    return X();  // assuming this makes sense
}
Run Code Online (Sandbox Code Playgroud)

将是上面的签名.

所以在你的情况下get_fun是一个返回函数指针的函数.