c++里 一个类的指针型成员函数可以指向同类中成员函数的变量吗?
1个回答
展开全部
虾米意思?是指类的成员变量是否可以指向类中的成员函数吗?如果这样子的,类的成员函数指针就是用来起这个作用,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. 类外函数指针变量的使用
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. 类外函数指针变量的使用
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询