0

我知道非指针函数类型的语法类似于void (int). 非指针成员函数类型的语法是什么?即class C; void (C::*)(int),但不是指针。

4

2 回答 2

4

答案是void (C::*)(int)

void (C::*)(int)不是指针类型。指向成员函数的指针不是指针。它们是很奇怪的动物

令人困惑的是,它们只是碰巧使用了类似于指针的名称和符号。这是我们必须忍受的麻烦。

于 2013-07-19T15:35:11.913 回答
0

对于任何类C和任何非成员类型T指向成员类型的指针都是T C::*

所以如果你有一个 type 的函数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::*

于 2013-07-19T15:56:32.600 回答