タイプは変更されていますが、*(int*)&b
と(int*)*(int*)&b
は同じアドレスを指しているはずです。仮想関数について、なぜ*(int *)&bと(int *)*(int *)&bの値が異なるのですか?
ここにソースファイルがあります。私はラインAの2つの出力が異なる理由について私を助けることができれば幸いです。
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
using namespace std;
typedef void (*fun)();
class Base
{
public:
virtual void f(){cout<<'f'<<endl;}
virtual void g(){cout<<'g'<<endl;}
virtual void h(){cout<<'h'<<endl;}
};
int _tmain(int argc, _TCHAR* argv[])
{
Base b;
cout<<*(int*)&b<<endl<<(int*)*(int*)&b<<endl; //A
return 0;
}
を異なる出力に関するより詳細な説明のための私の答えをご覧ください。 –