首页 新闻 会员 周边 捐助

虚函数无法访问数据成员

0
悬赏园豆:20 [待解决问题]

#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的值?

道心种魔的主页 道心种魔 | 初学一级 | 园豆:182
提问于:2016-08-05 23:05
< >
分享
所有回答(1)
0

我觉得是安全机制的问题,试试能不能*((int *)*(int *)(&b) + 1)访问name。

全世界都是雨 | 园豆:188 (初学一级) | 2016-10-11 23:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册