C++类成员函数指针使用介绍
3 月,跳不动了?>>> 前言 在之前写过的博客中有介绍过函数指针和指针函数的区别和简单用法(文章在这里),当时的Demo非常简单,都是C语言的写法,但是当在C++中直接像C那样使用类成员函数指针时就会报错:reference to non-static member function must be called 所以如果是C++中的成员函数指针其使用方法是有区别的,这里针对不同的场景做个补充说明。 类成员函数的指针(非静态) 指向类成员函数的指针与普通函数指针的区别在于,前者需要匹配函数的参数类型和个数以及返回值类型,还要匹配该函数指针所属的类类型。 这是因为非静态的成员函数必须被绑定到一个类的对象或者指针上,才能得到被调用对象的this指针,然后才能调用指针所指的成员函数(所有类的对象都有自己数据成员的拷贝,但是成员函数都是共用的,为了区分是谁调用了成员函数,就必须有this指针,this指针是隐式的添加到函数参数列表里去的)。 所以,对于类成员函数的指针使用包含以下几个步骤: 声明: 指向类的成员函数的指针需要在指针前面加上类的类型,格式为: typedef 返回值 (类名::*指针类型名)(参数列表); 赋值: 需要用类的成员函数地址赋值,格式为: 指针类型名 指针名 = &类名::成员函数名; 1 注意:这里的这个&符号是比较重要的:不加&