#include <iostream>
using namespace std;
#include<typeinfo>
class B{
private:
virtual void f(){
cout<<"Base::f"<<endl;
}
};
class A:public B{
};
void main(){
typedef void (*Fun)();
A a;
cout<<"(int *)(&a)的类型:"<<typeid((int *)(&a)).name()<<",,,,数值为:"<<(int *)(&a)<<endl;
cout<<"(&a)的类型:"<<typeid((&a)).name()<<",,,,数值为:"<<(&a)<<endl;
cout<<"*(int *)(&a)的类型:"<<typeid(*(int *)(&a)).name()<<",,,,数值为:"<<*(int *)(&a)<<endl;
cout<<"(int*)*(int *)(&a)的类型:"<<typeid((int*)*(int *)(&a)).name()<<",,,,数值为:"<<(int*)*(int *)(&a)<<endl;
Fun pfun=(Fun)*((int*)*(int *)(&a));
pfun();
}
结果:
结论:
对于int *型的地址,如(int*)(&a),用*符号取出来的是就是int型数字