#include #include using namespace std; class Base { public: Base() {}; virtual ~Base() = default; virtual void Method1(){ cout << "base m1" << endl; }; void Method2(){ cout << "base m2" << endl; }; }; class Derived: public Base { public: Derived():Base() { }; //virtual ~Derived() = default; void Method1(){ cout << "derived m1" << endl; }; void Method3(){ cout << "derived m3 " << data << endl; }; private: int data{3}; }; int main() { Base * b; Derived * d; d = new Derived; cout << "Creating a derived class " << endl; cout << "As Derived " << endl; d->Method1(); d->Method2(); d->Method3(); cout << endl; cout << "As Base " << endl; b = d; b->Method1(); b->Method2(); //b->Method3(); delete d; cout << endl; cout << "Creating a base class " << endl; b = new Base; cout << "As base " << endl; b->Method1(); b->Method2(); cout << endl; d = reinterpret_cast(b); cout << "As derived " << endl; d->Method1(); d->Method2(); d->Method3(); delete d; return 0; }