简单示例
class Test
{
public:
Test(){ std::cout << "Test()" << std::endl; };
void show() { std::cout << "show()" << std::endl; }
static void fun(){ std::cout << "fun()" << std::endl; }
int a;
static int b;
};
int Test::b;
int main()
{
//int * p = &Test::a;
//int Test::*p 转换为 int *
Test t1;
Test *t2 = new Test();
int Test::* p = &Test::a;
//依赖对象
t1.*p = 200;
std::cout << t1.*p << std::endl;
//依赖对象
t2->*p = 300;
std::cout << t2->*p << std::endl;
int * q = &Test::b;
//不依赖对象
*q = 400;
std::cout << *q << std::endl;
//pf指向的不是一般的全局方法,是属于Test类型下的成员方法
//C风格定义函数指针,自然就不需要加类作用域了
void (Test::*pf)() = &Test::show;
(t1.*pf)();
(t2->*pf)();
//而静态方法调用是不需要依赖对象的
void (*pfun)() = &Test::fun;
pfun();
return 0;
}