VC++ 的类中使用函数指针的小例子,通过函数指针调用不同的函数

/*****************************************************************************    
    FileName : testTstPf.cpp  
    FileFunc : VC++类中函数指针的使用
    Version  : V0.1    
    Author   : from jernymy   
    Date     : 2011-09-03  
    Descp    : VC++ 的类中使用函数指针的小例子,通过函数指针调用不同的函数 
*****************************************************************************/  
#include <stdio.h>   

class TstPf  
{  
public:  
    TstPf(void);  
    ~TstPf(void);  
  
    void TstA(void);  
  
    void PrtChar(void *pvData);  
    void PrtInt (void *pvData);  
    void PrtStr (void *pvData);  
    // for every env call method   
    void (TstPf::*pfPrt) (void *pvData);  
};  
  
TstPf::TstPf(void)  
{  
    this->pfPrt = NULL;  
}  
  
TstPf::~TstPf(void)  
{  
    this->pfPrt = NULL;  
}  
  
void TstPf::TstA(void)  
{  
    this->pfPrt = &TstPf::PrtChar; // jernymy 指向函数地址   
    (this->*(pfPrt))((void *)'C'); // jernymy 调用时的用法    
  
    this->pfPrt = &TstPf::PrtInt;  
    (this->*(pfPrt))((void *)201107424);  
  
    this->pfPrt = &TstPf::PrtStr;  
    (this->*(pfPrt))((void *)"jernymy function pointer used in class");   
}  
  
void TstPf::PrtChar(void *pvData)  
{  
    char chVar = (char)pvData;  
    printf("%s:%d run\n", __FILE__, __LINE__);  
    printf("chVar:%c\n", chVar);  
}  
  
void TstPf::PrtInt(void *pvData)  
{  
    int nVar = (int)pvData;  
    printf("%s:%d run\n", __FILE__, __LINE__);  
    printf("nVar:%d\n", nVar);  
}  
  
void TstPf::PrtStr(void *pvData)  
{  
    char *lpVar = (char *)pvData;  
    printf("%s:%d run\n", __FILE__, __LINE__);  
    printf("lpVar:%s\n", lpVar);  
}  
  
int main(void)  
{  
    TstPf cA;  
    cA.TstA();  
  
    return 0;  
}  

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值