如何取虚函数表中的地址使用?

#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型数字


猜你喜欢

转载自blog.csdn.net/u011776818/article/details/80800878