C++动态联编-函数指针

本文介绍了C++中的动态联编概念,通过函数指针实现通用函数`DisplayNumber`,该函数接受一个显示整数的函数指针作为参数,能够在运行时调用不同功能的函数来显示数字的十进制、八进制和十六进制形式。通过示例代码展示了如何使用函数指针实现动态联编的功能。
摘要由CSDN通过智能技术生成
在C++编译时,对于常规的函数调用,编译器在函数的调用出插入函数的相对地址,程序运行时可以有函数的相对地址计算出函数的绝对地址,这样函数可以被正确调用。这种在编译时就确定函数地址的联编过程叫做静态联编。动态联编是指在程序编译时,编译器并不知道函数的相对地址,调用函数的相对地址只有在程序运行时才能确定。例如在如下示例中的DisplayNumber()函数体内,编译器并不知道DisplayFormat(Number)调用的函数地址,真正的地址是在运行时通过实参传入的。




//示例2.1中定义了一个通用函数:void DisplayNumber(DISPLAYINTEGER DisplayFormat,const int Number)
//其功能是以各种格式显示整形数字。只要传递适当的实参,该函数就能很好工作。
//如果客户需求发生变化,例如增加二进制格式的输出,只要增加相应的功能函数。
// void DisplayBinary(const int Number)即可。通用函数不必改动。
//显然,函数指针DISPLAYINTEGER给该函数增添了灵活性,得以通用。
//这得益于C++的动态联编功能,而函数指针不过是该功能的一种应用形式。


#include 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值