C++中怎么获取类的成员函数的函数指针
2个回答
展开全部
虾米意思?是指类的成员变量是否可以指向类中的成员函数吗?如果这样子的,类的成员函数指针就是用来起这个作用,mfc消息路由机制也是机遇此原理。#include <stdio.h>class A{public: A() \/\/ Ctor { m_pfn1 = A::foo; \/\/ 有没有取地址符号一样 m_pfn2 = &A::bar; (this->*m_pfn1)(); (this->*m_pfn2)(0); } void foo(){printf("foo\n");} \/\/ 类函数 virtual void bar(int){printf("bar\n");} void (A::*m_pfn1)(); \/\/ 类函数指针成员变量 void (A::*m_pfn2)(int); \/\/ 类函数指针成员变量};int _tmain(int argc, _TCHAR* argv[]){ \/\/ 1. 类函数指针成员变量的使用 A a; A* p = &a; (a.*(a.m_pfn1))(); (a.*(a.m_pfn2))(0); \/\/ 多态 (p->*(p->m_pfn1))(); (p->*(p->m_pfn2))(0); \/\/ 多态 \/\/ 2. 类外函数指针变量的使用 typedef void (A::*MemFunPtr)(); MemFunPtr memPtr = &A::foo; (a.*memPtr)(); (p->*memPtr)(); return 0;}\r\n补充:\r\n->* 和.* 是C++新增加的操作符号,专用类成员指针变量取址(成员函数指针,成员变量指针)\r\n
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询