函数指针在MFC中的应用

来源:互联网 发布:如何查看淘宝价格走势 编辑:程序博客网 时间:2024/05/21 12:41

    马上就过年了,希望奋斗在一线的码农顺利收工,准备好年货过大年!提前给大家拜个早年。本系列的第三篇来到了虚拟函数这块,可能好多人看到这个概念就发怵,听我慢慢讲来......

     在实际的开发工作中,为了提高代码的重用性,编写通用的功能模块,往往需要设计处理几种不同对象的通用程序。下面给了例子

 照例给出0资源下载链接:http://download.csdn.net/detail/liquanhai/6880725

//显示8进制数CString DisplayOctal(const int Number){CString str;str.Format(_T("8进制显示:0%o"),Number);return str;}//显示10进制数CString DisplayDecimal(const int Number){CString str;str.Format(_T("10进制显示:%d"),Number);return str;}//显示16进制数CString DisplayHexadecimal(const int Number){CString str;str.Format(_T("16进制显示:0x%x"),Number);return str;}//函数指针的定义typedef CString(*pDisplayFunc)(const int);//定义新的函数使用函数指针CString DisplayNumber(pDisplayFunc pFuc,const int Number){return pFuc(Number);}void CMy20140124Dlg::OnBnClickedButton1(){// TODO: Add your control notification handler code hereCString str;//  str=DisplayNumber(DisplayOctal,100);//  str=DisplayNumber(DisplayDecimal,100); str=DisplayNumber(DisplayHexadecimal,100);SetDlgItemText(IDC_NUM,str);}

示例中的定义了一个通用函数DisplayNumber,功能是以各种格式显示数字。两个参数,一个是函数地址(即函数名称),另一个就是需要显示的数字。使用中只需要传递适当的实参,函数就能正常工作。如果客户的需求发生变化,如果要显示2进制数,仅需要添加Void DispayBinary(const int Number)即可。 通用函数不用变化。显然函数指针给函数增添了灵活性。

   这就是C++的动态联编。编译器在编译阶段并不能确切知道将要调用的函数,只有在程序运行时才能确定将要调用的函数。

   作为虚拟函数的引入篇不能写的过多,以免消化不了。接下来的一篇的一篇进入虚拟函数,敬请期待!

2 0
原创粉丝点击