2016-10-28 100 views
6

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

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; 
    } 
} 
+4

go C++ 11一路:'auto get_fun(int arg) - > auto(*)(double) - > double' – bolov

+0

另请参见[如何解释此C++类型?](http:// stackoverflow .com/q/37844752/1314743)和外部[如何解释复杂的C/C++声明](http://www.codeproject.com/Articles/7042/How-to-interpret-complex-CC-declarations)。 –

+1

@bolov猥亵:D – Quentin

回答

7

double (*)(double)它是带一个double参数和返回double功能函数指针的签名。通常

X (*)(A, B, C) // any number of args 

是指向函数,它的类型(A, B, C)指定参数和返回X类型,例如的值

X my_func(A, B, C) { 
    return X(); // assuming this makes sense 
} 

将是上面的签名。

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

2

double (*)(double)是代表函数指针的类型,取值为double并返回double