类外使用虚函数指针跳过private的限制,EG:
#include<iostream>
using namespace std;
class B
{
private:
virtual void func()
{
cout << "func" << endl;
}
};
int main()
{
B b;
long *p1 = (long *)&b;
long *p2 = (long *)(*p1);
typedef void(*Func)(void);
Func func = (Func)p2[0];
func();
return 0;
}
上述代码个人推测,虚函数的调用不像类中普通成员函数一样需要传入this指针(此观点不一定正确)