成员函数指针和指向静态成员函数的指针

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了成员函数指针和指向静态成员函数的指针相关的知识,希望对你有一定的参考价值。

#include <iostream>
using namespace std;

class Student{
public:
    Student(const string& name):m_name(name){}
    void who(void){
        cout << m_name << endl;
    }
    string m_name;
    static int s_add(int a,int b){
        return a+b;
    }
};
int main(void){
    //成员函数指针
    void (Student::*pwho)(void) = &Student::who;
    Student s1("zhnangfei");
    Student s2("zhaoyun");
    (s1.*pwho)();
    Student* ps = &s2;
    (ps->*pwho)();
    //指向静态成员函数的指针
    int (*padd)(int,int) = Student::s_add;
    //int (Student::*padd1)(int,int) = Student::s_add;错误的写法
    cout << padd(100,200) << endl;
    return 0;
}


成员函数的指针(即函数指针):
类型 ()(形参类型) = &类名::成员函数名(注意类名前一定要加取地址符&,不然报错)


指向静态成员函数的指针(还是函数指针):
类型 ()(形参类型) = Student::s_add(注意类型前面可以不加&也可以加)


本文出自 “12208412” 博客,请务必保留此出处http://12218412.blog.51cto.com/12208412/1866470

以上是关于成员函数指针和指向静态成员函数的指针的主要内容,如果未能解决你的问题,请参考以下文章

指向任何类类型的非静态成员函数的 C++ 函数指针

C++:如何返回指向非静态成员函数的指针?

C++|详解类成员指针:数据成员指针和成员函数指针及应用场合

C ++创建指向标头内所有公共静态成员函数的指针数组,然后使用它

指向重载静态成员的函数指针 - 在 unique_ptr 中用作自定义删除器

C++函数指针与成员函数指针