通過虛函數(shù)列表指針找到函數(shù)實(shí)際地址,好像也能證明虛函數(shù)列表指針存在
#include<iostream>
using namespace std;
class Shape{
public:
virtual void Areo(){
cout<<"Shape::Areo()"<<endl;
}
};
class Circle:public Shape{
//解開注釋,證明覆蓋存在
// virtual void Areo()
// {
// cout<<"Circle::Areo"<<endl;
// }
};
int main()
{
Shape s;
cout<<sizeof(s)<<endl;
cout<<&s<<endl;
unsigned int **p=(unsigned int**)&s;
cout<<**p<<endl;
void (*sss)()=(void (*)())(**p);
sss();
cout<<"_______________________"<<endl;
Circle c;
cout<<sizeof(c)<<endl;
cout<<&c<<endl;
unsigned int **q=(unsigned int**)&c;
cout<<**q<<endl;
void (*ccc)()=(void (*)())(**q);
ccc();
return 0;
}
運(yùn)行結(jié)果:
4
0x28fe8c
4317648
Shape::Areo()
_______________________
4
0x28fe88
4317648
Shape::Areo()
--------------------------------
2019-04-21
虛函數(shù)列表指針指向的是虛函數(shù)表