成员函数指针
1 #include <iostream> 2 using namespace std; 3 4 // 非成员函数指针 调用方式 (* 指针变量名 ) ( 实参表 ) 5 // 成员函数指针 调用方式 (被调用函数的宿主对象. *(指针变量)).(实参表) 6 // 成员函数指针 7 class CMyClass 8 { 9 public: 10 void __cdecl Say(void) 11 { 12 cout << __FUNCTION__ << endl; 13 } 14 15 // 成员指针 作为成员. 16 void (__cdecl CMyClass:: *pfSay)(void); 17 }; 18 19 // 成员指针 作为全局变量. 20 void (__cdecl CMyClass:: *g_pfSay)(void); 21 22 23 24 int _tmain(int argc, _TCHAR* argv[]) 25 { 26 CMyClass cls; 27 28 // 通过成员指针调用对象的成员函数的时候: 除了要有成员指针外,还要有合法对象或对象指针(被调函数的宿主对象). 29 30 31 // 成员指针 作为成员. 32 cls.pfSay = &CMyClass::Say; 33 (cls.*(cls.pfSay))(); // or (lpCls->*(lpCls.pfSay))(); 34 // | ————— 35 // | |_________ 成员函数指针. 36 // | 37 // |__________________ 被调用函数的宿主对象. 38 39 // 成员指针 作为全局变量. 40 g_pfSay = &CMyClass::Say; 41 (cls.*g_pfSay)(); // or (lpCls->*g_pfSay)(); 42 // | ————— 43 // | |_________ 成员函数指针. 44 // | 45 // |_______________ 被调用函数的宿主对象. 46 47 return 0; 48 }