#include<iostream>
using namespace std;
class Vehicle
{
private :
int speed;
string color;
int registration_number;
public :
Vehicle( )
{
int sp,reg;
string col;
cout << "Enter Speed : " ;
cin >> sp;
cout << "Enter Color : " ;
cin >> col;
cout << "Enter Registration Number : " ;
cin >> reg;
speed = sp;
color = col;
registration_number = reg;
}
virtual void show( )
{
cout << "Speed : " << speed<< endl;
cout << "Color : " << color<< endl;
cout << "Registration Number : " << registration_number<< endl;
}
} ;
class MotorVehicle : public Vehicle
{
private :
int noOfwheels;
int noOfDoors;
public :
MotorVehicle( )
{
int w,d;
cout << "Enter No of Wheels : " ;
cin >> w;
cout << "Enter No of Doors : " ;
cin >> d;
noOfwheels= w;
noOfDoors= d;
}
void show( )
{
cout << "No of Wheels : " << noOfwheels<< endl;
cout << "No of Doors: " << noOfDoors<< endl;
}
} ;
class Car : public MotorVehicle
{
private :
string brand;
public :
Car( )
{
string br;
cout << "Enter Brand : " ;
cin >> br;
brand= br;
}
void show( )
{
cout << "Brand : " << brand<< endl;
}
} ;
int main( )
{
Car obj1;
Vehicle* ptr = & obj1;
ptr- > show( ) ;
static_cast < MotorVehicle* > ( ptr) - > show( ) ;
static_cast < Car* > ( ptr) - > show( ) ;
}
I2luY2x1ZGU8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNsYXNzIFZlaGljbGUKewpwcml2YXRlOgogICAgIGludCBzcGVlZDsgCiAgICAgc3RyaW5nIGNvbG9yOyAKICAgICBpbnQgcmVnaXN0cmF0aW9uX251bWJlcjsKcHVibGljOgogICAgCiAgICBWZWhpY2xlKCkKICAgIHsKICAgICAgICBpbnQgc3AscmVnOwogICAgICAgIHN0cmluZyBjb2w7CiAgICAgICAgY291dDw8IkVudGVyIFNwZWVkIDogIjsKICAgICAgICBjaW4+PnNwOwogICAgICAgIGNvdXQ8PCJFbnRlciBDb2xvciA6ICI7CiAgICAgICAgY2luPj5jb2w7CiAgICAgICAgY291dDw8IkVudGVyIFJlZ2lzdHJhdGlvbiBOdW1iZXIgOiAiOwogICAgICAgIGNpbj4+cmVnOwogICAgICAgIHNwZWVkID0gc3A7CiAgICAgICAgY29sb3IgPSBjb2w7CiAgICAgICAgcmVnaXN0cmF0aW9uX251bWJlciA9IHJlZzsKICAgIH0KICAgIHZpcnR1YWwgdm9pZCBzaG93KCkKICAgIHsKICAgICAgICBjb3V0PDwiU3BlZWQgOiAiPDxzcGVlZDw8ZW5kbDsKICAgICAgICBjb3V0PDwiQ29sb3IgOiAiPDxjb2xvcjw8ZW5kbDsKICAgICAgICBjb3V0PDwiUmVnaXN0cmF0aW9uIE51bWJlciA6ICI8PHJlZ2lzdHJhdGlvbl9udW1iZXI8PGVuZGw7CiAgICB9Cn07CmNsYXNzIE1vdG9yVmVoaWNsZSA6IHB1YmxpYyBWZWhpY2xlCnsKcHJpdmF0ZToKICAgIGludCBub09md2hlZWxzOwogICAgaW50IG5vT2ZEb29yczsKcHVibGljOgogICAgTW90b3JWZWhpY2xlKCkKICAgIHsKICAgICAgICBpbnQgdyxkOwogICAgICAgIGNvdXQ8PCJFbnRlciBObyBvZiBXaGVlbHMgOiAiOwogICAgICAgIGNpbj4+dzsKICAgICAgICBjb3V0PDwiRW50ZXIgTm8gb2YgRG9vcnMgOiAiOwogICAgICAgIGNpbj4+ZDsKICAgICAgICBub09md2hlZWxzPXc7CiAgICAgICAgbm9PZkRvb3JzPWQ7CiAgICB9CiAgICB2b2lkIHNob3coKQogICAgewogICAgICAgIGNvdXQ8PCJObyBvZiBXaGVlbHMgOiAiPDxub09md2hlZWxzPDxlbmRsOwogICAgICAgIGNvdXQ8PCJObyBvZiBEb29yczogIjw8bm9PZkRvb3JzPDxlbmRsOwogICAgfQp9OwpjbGFzcyBDYXIgOiBwdWJsaWMgTW90b3JWZWhpY2xlCnsKcHJpdmF0ZToKICAgIHN0cmluZyBicmFuZDsKcHVibGljOgogICAgQ2FyKCkKICAgIHsKICAgICAgICBzdHJpbmcgYnI7CiAgICAgICAgY291dDw8IkVudGVyIEJyYW5kIDogIjsKICAgICAgICBjaW4+PmJyOwogICAgICAgIGJyYW5kPWJyOwogICAgfQogICAgdm9pZCBzaG93KCkKICAgIHsKICAgICAgICBjb3V0PDwiQnJhbmQgOiAiPDxicmFuZDw8ZW5kbDsKICAgIH0KfTsKaW50IG1haW4oKQp7CiAgICBDYXIgb2JqMTsKICAgIFZlaGljbGUqIHB0ciA9ICZvYmoxOwogICAgcHRyLT5zaG93KCk7CiAgICBzdGF0aWNfY2FzdDxNb3RvclZlaGljbGUqPihwdHIpLT5zaG93KCk7CiAgICBzdGF0aWNfY2FzdDxDYXIqPihwdHIpLT5zaG93KCk7Cn0=