#结合C++对象模型的知识,调用private函数
#include <iostream>
using namespace std;class ClassA {
public:
ClassA(const int p): m_d(p) {
}
private:
virtual void fun0() {
cout<< "fun0"<< endl;
}
virtual void fun1() {
cout<< "fun1"<< endl;
}
virtual void fun2() {
cout<< m_d<< endl;
}
int m_d;
};
typedef void (*FUNP)();
int main()
{
ClassA a(8);
FUNP* fp = *(FUNP **)&a; // 得到vptr指向的虚表的地址
cout << fp<< endl;
fp[0]();
fp[1]();
fp[2]();//肯定会很蛋疼的:没有将对象的首地址放到ecx寄存器中,
//而该成员函数会通过ecx中存储的值去访问数据成员m_d的
return 0;}