#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 y, *q; y.i1 = 1; y.i2 = 1000; p = &y; // Casted child variable y into parent reference p q = (child *) p; cout << "q->i1 = " << q->i1 << endl; // OK cout << "q->i2 = " << q->i2 << endl; // OK too !! }