这些类型是什么?

问题描述:

我是通过作用于元组升压文档阅读和整个以下有效元组实例(A,B和C是一些用户定义的类)传来:这些类型是什么?

tuple<A, int(*)(char, int), B(A::*)(C&), C> 

我不明白是什么类型的公司第二届和第三个参数。 int(*)(char, int)B(A::*)(C&)类型究竟是什么?

+2

http://www.unixwiz.net/techtips/reading-cdecl.html这是C; C++增加了指向成员和模板的类型,但这个想法仍然存在。阅读(但要注意人们不会在生产代码中使用它,有'typedef'来简化这种声明)。 – Kos 2012-02-09 13:12:37

int(*)(char, int) 

是指向一个函数接受charint作为参数并返回一个int

B(A::*)(C&) 

是指向一个成员函数的对象A上,返回B并接受向C参考作为参数。

+0

谢谢,我不知道第二个意思是什么。 +1 – 2012-02-09 13:04:52

int(*)(char, int)是一个指针,它指向返回int和花费charint作为参数的函数。

B(A::*)(C&) 

是指向成员函数(的A构件),其采用一个C&并返回一个B

实施例:

class B{ 
public: 
/*empty class*/ 
}; 
class A{ 
public: 
B DoSomething(C& input){ 
return B; 
} 

} 
int main(){ 
auto G = &A::DoSomething; 
} 

G类型是B(A::*)(C&)

int(*)(char, int) 

功能指针(char, int)并返回int

B(A::*)(C&) 

一个指针,指向的A服用C&返回B成员函数。

B(A::*)(C&)是指向A的成员函数,其参数为C并返回B对象。

陆先生已经回答了int(*)(char, int)