Тип изменен, но я думаю, *(int*)&b
и (int*)*(int*)&b
должны указывать на тот же адрес.О виртуальных функциях, почему печатаются значения * (int *) & b и (int *) * (int *) & b разные?
Вот исходный файл. Было бы признательно, если вы можете мне помочь в том, почему два выхода линии A отличаются друг от друга.
#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;
}
Пожалуйста, обратите внимание на мой ответ для более подробного объяснения относительно различной мощности. –