64,654
社区成员
发帖
与我相关
我的任务
分享
void (A::*fun)();//声明一个函数指针,同时声明了作用域。
A *p=new B;
fun=&A::fun;//把A中的fun函数的入口地址赋给函数指针,也可以把&去掉。
(p->*fun)();//其实这句话就跳到了A的fun函数去执行,加个p是指明这个函数的环境p,也就是这个函数的this指针是指向p的,如果不加p的话,里面很有可能会用到A的一些私有变量,这些私有变量都不知道指向哪了。所以这个p是一定要加的。
fun = &A::fun2;//下面就不用多解释了吧。
(p->*fun)();
delete p;
system("pause");
A *p=new B;
p->fun();
p->fun2();
delete p;
system("pause");