#include <iostream>
#include <string>
typedef std::string STRING;
class Base 
{
public:
   Base(STRING name){this->name = name;}
   virtual void f() { std::cout<< " Base::f " <<name << std::endl; }
private:
   STRING name;
};
typedef void(*Fun)(void);
int main()
{
   STRING name = "jack";
   Base b(name);
  b.f();   //结果为Base::f jack
   Fun pFun = NULL;
   pFun = (Fun)*(((int *)*(int *)(&b)));
   pFun();  //结果为Base::f
   return 0;
}
问题:问什么pFun()的执行结果中没有输出数据成员name的值?
我觉得是安全机制的问题,试试能不能*((int *)*(int *)(&b) + 1)访问name。