c++类函数地址

class AObj;

typedef int (AObj::*pfun)();

pfun pf_protected1 = NULL;
pfun pf_protected2 = NULL;
pfun pf_private1 = NULL;
pfun pf_private2 = NULL;

class AObj
{
public:
    AObj(){};

    static int a_static_fun()
    {
        pf_protected1 = &AObj::a_protected_fun1;
        pf_protected2 = &AObj::a_protected_fun2;

        pf_private1 = &AObj::a_private_fun1;
        pf_private2 = &AObj::a_private_fun2;
        return -1;
    }

    int a_public_fun1()
    {
        return 0;
    }
    int a_public_fun2()
    {
        return 1;
    }
protected:

    int a_protected_fun1()
    {
        return 2;
    }

    int a_protected_fun2()
    {
        return 3;
    }
private:
    int a_private_fun1()
    {
        return 4;
    }
    int a_private_fun2()
    {
        return 5;
    }
};


int test1(char* p);
int test2(char* p);

int test1(char* p)
{
    test2(p);

    return 1;
}

int test2(char* p)
{
    for (int i = 0; i < 172; i++)
    {
        *p++ = ;
    }

    return 0;
}

 


int _tmain(int argc, _TCHAR* argv[])
{
    AObj obj;

    AObj::a_static_fun();

    printf("obj: %p ", &obj);
    printf("AObj::a_static_fun %p ", &AObj::a_static_fun);

    printf("AObj::a_public_fun1 %p ", &AObj::a_public_fun1);
    printf("AObj::a_public_fun2 %p ", &AObj::a_public_fun2);

    printf("AObj::a_protected_fun1 %p ", pf_protected1);
    printf("AObj::a_protected_fun2 %p ", pf_protected2);

    printf("AObj::a_private_fun1 %p ", pf_private1);
    printf("AObj::a_private_fun2 %p ", pf_private2);

    //char szbuf[2];
    //sprintf(szbuf, "%d", 3.54f);

    //test1(szbuf);


 return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值