函数指针在MFC中的应用

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

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

 照例给出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 here

	CString 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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值