c++类函数地址

2014-11-24 12:59:19 · 作者: · 浏览: 0

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;
}