C++访问类中私有成员变量(四)

2013-04-24 12:12:52 · 作者: · 浏览: 825

 

  请使用某种方式来在类的外部改变私有成员A::value的值。

  程序员的可能做法:

  class A

  {

  int value;

  public:

  A(int n = 0) : value(n) {}

  int GetValue()

  {

  return value;

  }

  void SetValue(int n)

  {

  value = n;

  }

  };

  void f()

  {

  A a;

  a.SetValue(5);

  }

  黑客的可能做法:

  void f()

  {

  A a;

  *((int *)&a) = 5;

  }

  结论:

  程序员习惯于遵循既有的限制来增加既有的东西。

  黑客习惯于利用既有的东西来打破既有的限制。