#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函數。我不知道爲什麼,PLZ幫我爲什麼結果不符合我的預期?
你使用什麼編譯器? –
vs2010,你的意思是它可能與編譯器有一些關係? – cloud
是的,成員變量/方法在內存中的排序方式取決於編譯器。 –