#include <iostream>
using namespace std;
class A
{
public:
void func1() { cout << "func1\n"; }
void func2() { cout << "func2\n"; }
static void func3() { cout << "static func3\n"; }
};
void print() {
std::cout << "hello world" << std::endl;
}
int main(void) {
// 普通成员函数
void (A:: * pf)(); // 定义A的成员函数指针
pf = &A::func1; // 指针赋值
A a;
(a.*pf)(); // 用类的实例来调用函数指针指向的成员函数
pf = &A::func2;
(a.*pf)();
// 静态成员函数
void (*spf)(); // 静态函数指针定义 ,和普通的函数(非类成员函数)一样
spf = &A::func3; // 静态函数指针赋值
(*spf)(); // 调用
// 类成员函数调用,隐藏this指针
std::cout <<"普通成员函数: "<<typeid(&A::func1).name() <<" "<<typeid(pf).name() << std::endl;
std::cout <<"静态成员变量: "<<typeid(&A::func3).name() <<" "<<typeid(spf).name() << std::endl;
system("pause");
return 0;
}