#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。