您的位置:首页 > 编程语言 > C语言/C++

C++对象中的私有成员变量也可以被访问

2011-09-23 10:37 281 查看
  C++对象中的私有(保护)成员变量也可以从对象外面访问。下面的代码会让你大吃一惊:
 

#include <iostream.h>

class TestClass{
private:

   int  a;

   char b;

public:

   char c;

   TestClass(): a(29), b('b'), c('c'){ }

};

int main(int argc,char *argv)

{

   TestClass* pObject = new TestClass();

 

   int *p_int_a =  (int*)pObject;

   cout <<"The value of pointer p_int_a is: " << *p_int_a++ << endl;

 

   char *p_char_b = (char*)p_int_a;

   cout << "The value of pointer p_char_b is: " << *p_char_b++ << endl;

 

   cout << "The value of pointer p_char_b is: " << *p_char_b << endl;

return 0;

}

 

其运行结果为:




 

 

    为什么会这样?原因很简单:在C++中,private, protected只是程序逻辑上的一种保护,即如果破坏了这种规则(从对象外面访问private,protected成员),只是在编译器哪儿通不过。但通过指针可以直接读取对象中的私有变量,当然,前提是知道对象中成员变量的顺序和类型,否则读取的数据与我们需要的有偏差!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 编译器 c