class Base { public: virtual void foo() const { std::cout << "Base"; } }; class Derived : public Base { public: virtual void foo() const { std::cout << "Derived"; } }; Derived d; // call Base::foo on this object Tried casting and function pointers but I couldn't do it. Is it possible to defeat virtual mechanism (only wondering if it's possible)?