class a { public: int i; public: virtual void f() { i = 0; } }; class b : virtual public a { public: virtual void f() { i = 1; } }; int main() { b o; a* pA = &o; b* pB = static_cast(pA); return 0; }