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++ = '\0';
??? }
??? return 0;
}
?
int _tmain(int argc, _TCHAR* argv[])
{
??? AObj obj;
??? AObj::a_static_fun();
??? printf("obj: %p\n", &obj);
??? printf("AObj::a_static_fun %p\n", &AObj::a_static_fun);
??? printf("AObj::a_public_fun1 %p\n", &AObj::a_public_fun1);
??? printf("AObj::a_public_fun2 %p\n", &AObj::a_public_fun2);
??? printf("AObj::a_protected_fun1 %p\n", pf_protected1);
??? printf("AObj::a_protected_fun2 %p\n", pf_protected2);
??? printf("AObj::a_private_fun1 %p\n", pf_private1);
??? printf("AObj::a_private_fun2 %p\n", pf_private2);
??? //char szbuf[2];
??? //sprintf(szbuf, "%d", 3.54f);
??? //test1(szbuf);
?return 0;
}