【发布时间】:2011-11-24 23:38:30
【问题描述】:
#include <iostream>
using namespace std;
typedef void (*pFun)(void);
class A
{
private:
int a;
int b;
virtual void outPrint()
{
cout << b << endl;
}
public:
A()
{
a = 3;
b = 4;
}
};
int main()
{
A obj;
cout << *((int*)(&obj)+1) << endl;
pFun pFunc;
pFunc = (pFun)*((int*)*(int*)(&obj));
pFunc();
system("pause");
return 0;
}
当我调用 pFunc() 时,我认为结果应该是 4,但实际上它是一个随机数。 我调试程序,发现 pFunc 指向 outPrint 函数。我不知道为什么,请帮助我
【问题讨论】:
-
vs2010 ,你的意思是可能跟编译器有关系?
-
是的,成员变量/方法在内存中的排序方式取决于编译器。
-
您所做的几乎所有事情都会导致未定义的行为,所以我不确定您为什么期望发生任何特别的事情。
标签: c++ function-pointers virtual-functions