类成员指针一般很少用到,使用类成员的指针与普通指针的区别在于,需要在类成员指针前面的加上类限定符,以指明是哪个类的成员指针。同样,在初始化指针时,也只能用相应类的相应类型的成员对指针进行初始化。
成员指针的应用举例
当一个类有多个性质相同且类型相同的函数成员时,可以使用函数表来进行函数调用,产生用同一函数使用不同参数来达到不同操作的效果,而实际上是调用了不同的函数来实现的。下面给出这样的一个例子,方便读者有一个感性的认识:
#include <iostream> |
上面例子表明了类成员函数指针比较有优势的地方,可以扩展到用map代替上面的数组,实现高效的字符串和函数的绑定~~
另外由于类成员函数指针匹配条件非常严格,所以不建议用在比如线程入口函数等地方,往往会报不少错误。当然,如果符合下面三个条件也可以消除编译错误。
函数成员的指针与普通函数指针相比,也多了类限定符。由于类成员函数还有可能是const,所以const也成为成员函数指针声明的一部分。也就是说,函数成员的指针必须在三个方面与它所指函数的类型相匹配:
(1)函数形参的类型和数目;
(2)返回类型及是否为const函数;
(3)所属类的类型。