#include<iostream>
using namespace std;
class shape
{
public:
shape()
{
cout << "shape created" << endl;
}
virtual void draw()=0;
};
class circle : public virtual shape
{
public:
circle()
{
cout << "circle created" << endl;
}
virtual void draw()
{
cout << "this is a circle" << endl;
}
};
class square : public virtual shape
{
public:
square()
{
cout << "square created" << endl;
}
virtual void draw()
{
cout << "this is a square" << endl;
}
};
class shapes : public circle, public square
{
public:
shapes()
{
cout << "shapes created" << endl;
}
virtual void draw()
{
circle::draw();
square::draw();
}
};
int main()
{
shapes e;
cout << "-------------" << endl;
e.draw();
return 0;
}
CiAgICAjaW5jbHVkZTxpb3N0cmVhbT4KICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAgICBjbGFzcyBzaGFwZQogICAgewogICAgcHVibGljOgogICAgICAgIHNoYXBlKCkKICAgICAgICB7CiAgICAgICAgICAgIGNvdXQgPDwgInNoYXBlIGNyZWF0ZWQiIDw8IGVuZGw7CiAgICAgICAgfQogICAgICAgIHZpcnR1YWwgdm9pZCAgZHJhdygpPTA7CgoKICAgIH07CiAgICBjbGFzcyBjaXJjbGUgOiBwdWJsaWMgdmlydHVhbCBzaGFwZQogICAgewogICAgcHVibGljOgogICAgICAgIGNpcmNsZSgpCiAgICAgICAgewogICAgICAgICAgICBjb3V0IDw8ICJjaXJjbGUgY3JlYXRlZCIgPDwgZW5kbDsKICAgICAgICB9CiAgICAgICAgdmlydHVhbCB2b2lkICBkcmF3KCkKICAgICAgICB7CiAgICAgICAgICAgIGNvdXQgPDwgInRoaXMgaXMgYSBjaXJjbGUiIDw8IGVuZGw7CiAgICAgICAgfQogICAgfTsKICAgIGNsYXNzIHNxdWFyZSA6IHB1YmxpYyB2aXJ0dWFsIHNoYXBlCiAgICB7CiAgICBwdWJsaWM6CiAgICAgICAgc3F1YXJlKCkKICAgICAgICB7CiAgICAgICAgICAgIGNvdXQgPDwgInNxdWFyZSBjcmVhdGVkIiA8PCBlbmRsOwogICAgICAgIH0KICAgICAgICB2aXJ0dWFsIHZvaWQgIGRyYXcoKQogICAgICAgIHsKICAgICAgICAgICAgY291dCA8PCAidGhpcyBpcyBhIHNxdWFyZSIgPDwgZW5kbDsKICAgICAgICB9CiAgICB9OwogICAgY2xhc3Mgc2hhcGVzIDogcHVibGljICBjaXJjbGUsIHB1YmxpYyAgc3F1YXJlCiAgICB7CiAgICBwdWJsaWM6CiAgICAgICAgc2hhcGVzKCkKICAgICAgICB7CiAgICAgICAgICAgIGNvdXQgPDwgInNoYXBlcyBjcmVhdGVkIiA8PCBlbmRsOwogICAgICAgIH0KICAgICAgICAKICAgICAgICB2aXJ0dWFsIHZvaWQgZHJhdygpCiAgICAgICAgewogICAgICAgIAljaXJjbGU6OmRyYXcoKTsKICAgICAgICAJc3F1YXJlOjpkcmF3KCk7CiAgICAgICAgfQogICAgfTsKICAgIGludCBtYWluKCkKICAgIHsKICAgICAgICBzaGFwZXMgZTsKICAgICAgICBjb3V0IDw8ICItLS0tLS0tLS0tLS0tIiA8PCBlbmRsOwogICAgICAgIGUuZHJhdygpOwogICAgICAgIHJldHVybiAwOwogICAgfQ==