class Base { public: virtual void MetodoA() {} virtual void MetodoPuro() = 0; }; class Hija1:public Base { public: virtual void MetodoB() {}; }; class Hija2:public Base { public: virtual void MetodoC() {}; }; class Real1:public Hija1 { public: void MetodoA() override {}; void MetodoB() override {}; void MetodoPuro() override {} }; class Real2:public Hija2 { public: void MetodoA() override {}; void MetodoC() override {}; void MetodoPuro() override {} }; int main() { Hija1 *pHija1 = new Real1(); Hija2 *pHija2= new Real2(); pHija2->MetodoC(); /////Ejecuta MetodoB() de pHija1 !!!!!!!!!!!!!! }