首页IT科技指向类成员函数的指针(指向类成员的指针)

指向类成员函数的指针(指向类成员的指针)

时间2025-06-14 07:07:09分类IT科技浏览6122
导读:指向类成员(成员变量和成员方法 的指针...

指向类成员(成员变量和成员方法)的指针

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 * 点击查看代码 需要这样定义 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()"<<this->ma<<endl;} static void static_f(){ cout<<"Test::void static_f()"<< mb<<endl; } Test2(int _ma):ma(_ma){} }; int Test2::mb=0; int main(){ Test2 obj1(100); Test2 *pObj2=new Test2(20); //定义指针指向 类的普通成员变量 int Test2::*p = &Test2::ma; obj1.*p=1000; pObj2->*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; }

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
python抛出异常raise(python raise触发异常的实现) js实现轮播图原理及示例(JS实现轮播图(一看就懂逻辑清晰))