Use this polymorphic technique to cheat the compiler and expose private information:
See the code below.
class A{
public:
virtual void f2()
{
printf("in A::f2\n");
}
};
class B: public A{
private:
void f2(int j)
{
printf("in B::f2\n");
}
};
int main()
{
B b;
A *a = &b
a->f2(10);
}
Because
a->f2 is virtual and called run time, using it calls
f2 of
B.
F2 is private in
B, but still you're still able to call it. That's the magic.