扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
指向类成员(成员变量和成员方法)的指针
荥阳网站建设公司创新互联建站,荥阳网站设计制作,有大型网站制作公司丰富经验。已为荥阳上千提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的荥阳做网站的公司定做!
1:定义一个指针指向类的普通成员变量
示例代码1
class Test2{
public:
int ma;
static int mb;
void f1(){cout<<"Test::void f1()"<
需要这样定义
int Test2::*p = &Test2::ma;
*p=30;//这样操作没有意义,因为ma是需要基于对象的,所以需要这样
Test2 t;
int Test2::*p = &Test2::ma;
t.*p=30;
或者
Test2 *pt=new Test2();
int Test2::*pp = &Test2::ma;
pt->*pp=40;
或者
int *p3=&Test2::mb;
*p3=50;
2:定义一个函数指针指向类的成员函数
void (*pf)() = &Test2::f1(); 编译报错
要明确的指出pf是指向Test2类中函数的函数指针,如下
void(Test2::*pf)()=&Test2::f1();
如果通过函数指针调用函数?需要依赖对象,如下
Test2 t3;
Test2 p4=new Test2();
t3.pf(); //*解引用
(p4->*pf)();// *解引用
3:定义函数指针指向类的静态成员方法
void (pf2)() = &Test2::static_f;
(pf2)();
完整示例代码如下
class Test2{
public:
int ma;
static int mb;
void f1(){cout<<"Test::void f1()"<ma<*p=2000;
//定义指针指向 类的 静态成员变量
int *pStatic = &Test2::mb;
*pStatic=9999;
//定义函数指针 指向 类的普通成员方法
void (Test2::*pf)()=&Test2::f1;
(obj1.*pf)();
(pObj2->*pf)();
//定义函数指针 指向 类的静态方法
void (*pf2)() = &Test2::static_f;
(*pf2)();
return 1;
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流