Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我知道非指针函数类型的语法类似于void (int). 非指针成员函数类型的语法是什么?即class C; void (C::*)(int),但不是指针。
void (int)
class C; void (C::*)(int)
答案是void (C::*)(int)。
void (C::*)(int)
void (C::*)(int)不是指针类型。指向成员函数的指针不是指针。它们是很奇怪的动物。
令人困惑的是,它们只是碰巧使用了类似于指针的名称和符号。这是我们必须忍受的麻烦。
对于任何类C和任何非成员类型T,指向成员类型的指针都是T C::*。
C
T
T C::*
所以如果你有一个 type 的函数T = R(A1, A2, A3),那么作为一个成员函数,它的指针成员类型是
T = R(A1, A2, A3)
T C::* = R (C::*)(A1, A2, A3)
例如,在
struct C { R foo(A1, A2, A3); int x; }
该值&C::foo具有这种类型。另外,&C::x有类型int C::*。
&C::foo
&C::x
int C::*