#include class Iface { public: virtual void foo() { std::cout << "Iface" << std::endl; } }; class D : public virtual Iface { public: void foo() { std::cout << "D" << std::endl; } }; int main() { D d; d.foo(); ((Iface)d).foo(); return 0; }