【发布时间】:2016-04-17 06:53:26
【问题描述】:
类型改变了,但我认为*(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;
}
【问题讨论】:
-
请查看我的答案以获得有关不同输出的更详细说明。
标签: c++ pointers virtual-functions