#include <bits/stdc++.h>
using namespace std;
class Device
{
protected:
string name;
public:
virtual void showStatus() = 0; // Pure Virtual Function
};
class Laptop : public Device
{
private:
string brand;
public:
Laptop(string b)
{
brand = b;
}
void showStatus()
{
cout << "Laptop " << brand << " is ON" << endl;
}
};
class Mobile : public Device
{
private:
string model;
public:
Mobile(string m)
{
model = m;
}
void showStatus()
{
cout << "Mobile " << model << "is Running" << endl;
}
};
class Tablet : public Device
{
private:
string osType;
public:
Tablet(string os)
{
osType = os;
}
void showStatus()
{
cout << "Tablet " << osType << "is Active" << endl;
}
};
int main()
{
Device *d;
Laptop l("Dell");
Mobile m("Samsung");
Tablet t("Android");
d = &l;
d->showStatus();
d = &m;
d->showStatus();
d = &t;
d->showStatus();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpjbGFzcyBEZXZpY2UKewpwcm90ZWN0ZWQ6CiAgICBzdHJpbmcgbmFtZTsKCnB1YmxpYzoKICAgIHZpcnR1YWwgdm9pZCBzaG93U3RhdHVzKCkgPSAwOyAvLyBQdXJlIFZpcnR1YWwgRnVuY3Rpb24KfTsKCmNsYXNzIExhcHRvcCA6IHB1YmxpYyBEZXZpY2UKewpwcml2YXRlOgogICAgc3RyaW5nIGJyYW5kOwoKcHVibGljOgogICAgTGFwdG9wKHN0cmluZyBiKQogICAgewogICAgICAgIGJyYW5kID0gYjsKICAgIH0KCiAgICB2b2lkIHNob3dTdGF0dXMoKQogICAgewogICAgICAgIGNvdXQgPDwgIkxhcHRvcCAiIDw8IGJyYW5kIDw8ICIgaXMgT04iIDw8IGVuZGw7CiAgICB9Cn07CgpjbGFzcyBNb2JpbGUgOiBwdWJsaWMgRGV2aWNlCnsKcHJpdmF0ZToKICAgIHN0cmluZyBtb2RlbDsKCnB1YmxpYzoKICAgIE1vYmlsZShzdHJpbmcgbSkKICAgIHsKICAgICAgICBtb2RlbCA9IG07CiAgICB9CgogICAgdm9pZCBzaG93U3RhdHVzKCkKICAgIHsKICAgICAgICBjb3V0IDw8ICJNb2JpbGUgIiA8PCBtb2RlbCA8PCAiaXMgUnVubmluZyIgPDwgZW5kbDsKICAgIH0KfTsKCmNsYXNzIFRhYmxldCA6IHB1YmxpYyBEZXZpY2UKewpwcml2YXRlOgogICAgc3RyaW5nIG9zVHlwZTsKCnB1YmxpYzoKICAgIFRhYmxldChzdHJpbmcgb3MpCiAgICB7CiAgICAgICAgb3NUeXBlID0gb3M7CiAgICB9CgogICAgdm9pZCBzaG93U3RhdHVzKCkKICAgIHsKICAgICAgICBjb3V0IDw8ICJUYWJsZXQgIiA8PCBvc1R5cGUgPDwgImlzIEFjdGl2ZSIgPDwgZW5kbDsKICAgIH0KfTsKCmludCBtYWluKCkKewogICAgRGV2aWNlICpkOwoKICAgIExhcHRvcCBsKCJEZWxsIik7CiAgICBNb2JpbGUgbSgiU2Ftc3VuZyIpOwogICAgVGFibGV0IHQoIkFuZHJvaWQiKTsKCiAgICBkID0gJmw7CiAgICBkLT5zaG93U3RhdHVzKCk7CgogICAgZCA9ICZtOwogICAgZC0+c2hvd1N0YXR1cygpOwoKICAgIGQgPSAmdDsKICAgIGQtPnNob3dTdGF0dXMoKTsKCiAgICByZXR1cm4gMDsKfQ==