<六>指向类成员的指针

指向类成员(成员变量和成员方法)的指针
1:定义一个指针指向类的普通成员变量
示例代码1

点击查看代码class Test2{public:int ma;static int mb;void f1(){cout<<"Test::void f1()"<<endl;}static void static_f(){cout<<"Test::void static_f()"<<endl;}};int Test2::mb=0;int main(){int *p = &Test2::ma;return 1;}
上面 int *p = &Test2::ma; 可以这样吗?不可以,编译报错 不可以将int Test2::* 转为 int *
点击查看代码需要这样定义intTest2::*p = &Test2::ma;*p=30;//这样操作没有意义,因为ma是需要基于对象的,所以需要这样Test2t;intTest2::*p = &Test2::ma;t.*p=30;或者Test2 *pt=new Test2();intTest2::*pp = &Test2::ma;pt->*pp=40;或者int *p3=&Test2::mb;*p3=50;
2:定义一个函数指针指向类的成员函数
void (*pf)() = &Test2::f1(); 编译报错
要明确的指出pf是指向Test2类中函数的函数指针,如下
void(Test2::*pf)()=&Test2::f1();
如果通过函数指针调用函数?需要依赖对象,如下Test2t3;Test2

    推荐阅读