超脱c++权限控制,首先申明这没有任何用处

超脱c++权限控制,首先申明这没有任何用处





VC2005通过编译,由于虚函数表的问题,依赖性很大。
其实这没有任何用处,只是在使用多了一个选择而已。
带参数的虚函数注意第一个参数为对象指针,静态的不用关心太多。

至于private 和protected非虚函数和非静态的,不知道怎么取他们的地址,所以没有写。


直接操作成员变量的
如果有多个成员变量
注意变量的对齐问题,
我不再举例:
有点复杂
^ _ ^

#include 
" stdafx.h "
#include 
< string >
#include 
< algorithm >
#include 
< iostream >
typedef 
void  (_cdecl  * funcall)( int  );
typedef 
void  (_cdecl  * funcall1)( void *  , int  );
typedef 
void  (_cdecl  * funcall2)( void *  );
funcall g_call;
funcall2 g_call1;
void  funcallinstance()
{
    g_call(
3 );
}
class  aa
{
public :
    aa()
    {
        
// callfunc(aat);
        g_call = aat;
        
// g_call1=(funcall2)&aa::fun1;
    }

private  :
    
static   void  _cdecl  aat( int  a)
    {
        
int  b = a;
        std::cout
<< " aa " ;
    }
    
virtual   void  _cdecl fun( int  a)
    {
        
int  b = a;
        fuckmember
= b;
        std::cout
<< " virtual " ;
    }
    
void  _cdecl fun1()
    {
        std::cout
<< " common " ;
    }
    
int  fuckmember;
    };
int  main()
{
    aa attt;
    
int *  pthis = ( int * ) & attt;
    
int *  funtable = ( int * )pthis[ 0 ];
    
int   &  member = pthis[ 1 ];
    member
= 10 ;
    funcall1 virfun
= (funcall1)funtable[ 0 ];
    virfun(
& attt, 5 );
    funcallinstance();
    
/// g_call1(&attt);
    
}

你可能感兴趣的:(超脱c++权限控制,首先申明这没有任何用处)