指向C++类成员函数的指针不同于一般的函数指针,称为成员指针(pointer to member)。成员指针包含类的类型以及成员类型。成员指针只应用于类的非static成员,static成员不是任何对象的组成部分,所以不需要特殊语法来指向static成员,static成员函数指针就是普通指针。
举例类A声明如下
定义
通过定义符号 ::* 定义成员指针
定义成员函数指针必须在三个方面与它所指的函数类型相互匹配
- 函数形参的类型和数目,包括成员是否是const
- 返回类型
- 所属类的类型
赋值
通过对类成员函数取址进行赋值,而不是对具体对象的函数取址。因为类成员函数属于类,不属于具体对象。
调用
通过成员访问操作符 .* 和 ->* 访问指针指向的成员函数。
注意:调用操作符的优先级高于成员指针操作,所以调用时必须加上括号!