关于指向类成员函数的函数指针

 首先,关于声明普通函数指针

返回值类型 (*指针名)(参数);

如:int (*p) (int); //声明一个指向返回值为int,参数类型为int的函数指针

更常用的声明方法 typedef int(*p)(int); //声明了一个函数指针类型p


指向类函数指针声明:

关于指向类的函数指针,都要加上类的作用域

如: int (A::*p)(int); //表示指向A类返回值为int,参数类型为int的函数指针


#include<iostream>

扫描二维码关注公众号,回复: 2461236 查看本文章

using namespacestd;

class A

{

public:

    int speak(int mm,int nn){

        return (mm-nn);

    };

};


int main()

{

    

    int b=9;

    int c =0;

    int (A::*pmf)(int ,int);//指针的声明

    pmf = &A::speak;//指针的赋值,关于&,大神们的解释是类函数名不会隐式转换,这里不做深究

    A a; //生成对象

    cout<<(a.*pmf)(b,c);//在使用指向类的函数指针时,一定要有对象

    return0;

}


ps:以上代码风格上十分不好,只关注思想即可

猜你喜欢

转载自blog.csdn.net/qq_27157975/article/details/51437988