#include class parent { public: int i1; void f1() { cout << "parent method" << endl; } }; class child : public parent { public: int i2; void f2() { cout << "child method" << endl; } }; int main(int argc, char **argv) { parent x, *p; child *q; x.i1 = 1; p = &x; // p points to a parent variable (object) q = (child *) p; // May cause problems - if you access child part !.... // q = (child *) &x; cout << "q->i1 = " << q->i1 << endl; // OK cout << "q->i2 = " << q->i2 << endl; // Access a non-existing variable !! }