函数指针用法一:传参(多态性)

本文介绍了C++中函数指针类型的定义方法及使用技巧,包括如何为函数指针类型创建typedef别名,并展示了如何通过函数指针来实现灵活的回调机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

bool IsNpc(APawn* pPawn) const {return (NULL != Cast<ASA2NpcPawn>(pPawn));}
bool IsMonster(APawn* pPawn) const ...
bool IsPet...

typedef bool (*CheckPawnType)(APawn* pPawn) const;
void MaskPawn(ASA2Pawn* aPawn, CheckPawnType CheckCall)
{
      if(aPawn && (*CheckCall)(aPawn))
      {
           aPawn->bMask = true;
      }   
}

调用方式:

MaskPawn(aPawn, &IsNpc);

MaskPawn(aPawn, &IsPet);

理解:

对比这两种写法:

typedef bool (*CheckPawnType)(APawn* pPawn);

bool (*CheckPawnType)(APawn* pPawn);

第一个:typedef  返回类型(*新类型)(参数表)

         未分配内存,而是给bool(*)(APawn* pPawn)类型取了一个别名:CheckPawnType;

    使用上:CheckPawnType pPawnType = &IsNpc;

    这样就定义了一个函数指针变量。

第二个:返回类型(*函数指针名称)(参数表)

         分配了内存,指向空间的指针为CheckPawnType;

    使用上:CheckPawnType = IsNpc;

    自己本身就是一个指针。

转载于:https://www.cnblogs.com/YoungBig/p/9343770.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值