#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
はい、メンバ変数/メソッドがメモリ内でどのように順序付けられるかは、コンパイラに依存します。 –