资源描述:
《c++学习记录(函数指针)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、C++学习记录(函数指针)就像数组名是指向数组第一个元素的常指针一样,函数名也是指向函数的常指针。可以声明一个指向函数的指针变量,并且用这个指针来调用这个函数。这可能非常有用;它使你能编写一个根据用户输入来决定调用哪一个函数的程序。有关函数指针唯一的决窍是理解所指向的对象类型。一个指向整型的指针指向一个整型变量,一个指向函数的指针必须指向一个有正确返回类型和签名的函数。1.声明函数指针:void(*pfunc)();int(*pfunc)(intCount1,intCount2);两个*pfunc都是指向函数的
2、指针,第一个函数不带参数并返回空类型;第二个函数带有两个整型参数并返回一个整型变量。2.声明函数指针数组就像声明一个指向整型变量的指针数组一样,也可以声明一个指向返回特定值类型和只有特定签名的函数指针数组。void(*pfunc[5])(intCount1,intCount2);3.函数指针(函数指针数组)作为参数函数指针(函数指针数组)可以传递给别的函数(这些函数可能执行动作,然后用这个指针调用正确的函数)。voidOnDraw(void(*func)()){if(func)func0;}4.成员函数指针创建
3、成员函数指针,可以用与函数指针相同的语法,加上包含类名和作用域运算符(::)。void(tclass::*pfunc)(intCountl,intCount2);成员函数指针的用法和函数指针的用法一样,不同之处是成员函数指针需要一个正确的类对象來调用是针对它的函数。上机练习:学习实例编程:一个应用窗体框架基类程序(C++)-—文件名:TCWin.h/*TCwin.h(C卄)窗体框架棊类*/#ifndef_TCWIN_H_^define_TCWIN_H_ttincludc^defineTCW_M
4、SGstatic#definetcwmsgstaticttdcfinctcWinMainOWINAPIWinMain(HINSTANCEhlnstancc,HINSTANCEhPrcvlnstancc,LPSTRlpszCmdLine,intnCmdShow)^definetcMainOWIXAPIWinMain(HINSTANCEhlnstance,HINSTAXCEhPrevInstance,LPSTRlpszCmdLine,intnCmdShow)#definetMain()WINAPIWinMain(H
5、INSTANCEhInstance,HINSTANCEhPrevInstance,LPSTKIpszCmdLine,intnCmdShow)I////////////I//////////////////////////////////////////////////////////////////////////////////////////////////////////////TCMSGFUNC---struct//声明窗体消息接口函数//structTCMSGFUNC{intmfId;void(*ms
6、gfuncO)();void(*msgfuncl)(intCount);void(*msgfunc2)(intCountl,intCount2);void(*msgfunc3)(HINSTAXCEhlnstance,IIWXDhWnd,WPARAMwParam);};///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////T
7、CMSGstruct//声明窗体消息信息//structTCMSG{UINTmsg;UINTmid;TCMSGFUNCmsgfunc;};///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////TCMSGGetTCMsg(UINTmsg,UINTmid,intnifld,void(*funcO)(),void(*funcl)
8、(intCount),void(*func2)(intCountl,intCount2),void(*func3)(IIINSTANCEhInstance,HWNDhWnd,WPARAMwParam)){TCMSGtcmsg;ternsg.mld=mld;temsg・msg二msg;temsg・msgfunc・mfld=mfId;temsg・msgfunc.msgfuncO=funcO