class A { int i; public: A(): i(0) {}; ~A() {}; virtual int get_val() { return i; }; }; class B : public A { int j; public: B(): j(45) {}; ~B() {}; } int foo(void) { B b, *bp; bp = &b; return bp->get_val(); }