一般地,class 的权限修饰符是用来防止非法访问的。
但是,作为比较靠近底层的C++,应该是能够使用强制操作获取一切的数据。
比如
class TEST
{
private :
int x ;
int y ;
public :
int z ;
};
TEST test ;
我们可以使用 test.z 获取 test 中的成员变量 z 。
对于变量或者函数,我们可以创建一个用于获取指针的公有函数如下:
class TEST
{
private :
int x ;
int y ;
int PriFunc( void ); // 具体实现不是重点
public :
int z ;
int ( TEST::*GetPrivateFunctionPoint( void ) )( void )
{
return ( this->PriFunc ) ;
}
int* GetXPoint( void ){ return &( this->x ) ; }
};
以上就当是抛砖了。
我们可以在已知构造的任何情况下,使用下列方式更改 x、y 等成员变量的值。
int* point = (int*)&test ;
test[0] = 15; // 设置 x 的值
test[1] = 233 ; // 设置 y 的值
但是,当我们希望在已知类的构造,并且不希望改变其构造的情况下,能否通过某种方式强制获取类的另一种私有成员——成员函数的指针呢?
如果有,希望前辈能够给予相关指点。