#include using namespace std; class Pure { public: Pure() {}; virtual void Method1(int x) = 0; virtual void Method2() { cout << "Base method 2" << endl;}; virtual void Method2(int x) { cout << "Base method2 with " << x << endl; } }; class Derived: public Pure { public: //virtual void Method1(float x) override {}; virtual void Method1(int x) override { cout << "Derived Method1 " << x << endl; } // this will make all Method2 from the base visible. using Pure::Method2; virtual void Method2() override { cout << "Derived Method2" << endl; } }; int main() { //Pure p; Derived d; d.Method1(1); d.Method2(); d.Method2(3); return 0; }