#include <iostream>
using namespace std;
class Figure{
protected:
double s=0;
public:
Figure(){
// cout<<"Constructor Figure"<<endl;
}
~Figure(){
// cout<<"Destrutor Figure"<<endl;
}
double getS(){
return s;
}
friend std::ostream & operator<<(std::ostream &, const Figure);
};
std::ostream & operator<< (std::ostream & out, const Figure x) {
out <<"S="<< x.s<<endl;
out<<"Hello";
return out;
}
class Triangle:public Figure{
public:
int x, y, z;
Triangle(int a, int b, int c)
{
cout<<"Constructor Tri"<<endl;
x = a;
y = b;
z = c;
s=a+b+c;
}
friend std::istream & operator>> (std::istream &, Triangle &);
~Triangle(){
// cout<<"Destrutor Triangle"<<endl;
}
};
class Rect: public Figure
{
public:
int x, y;
Rect(int a, int b)
{
//cout<<"Constructor Rect"<<endl;
x = a;
y = b;
s=a*b;
}
~Rect(){
// cout<<"Destrutor Rect"<<endl;
}
};
void ex(){
Rect x(1,2);
}
std::istream & operator>> (std::istream & in, Triangle & x) {
cout<<"Hello2222";
int a,b,c;
in >> a>> b>>c;
x = Triangle(a,b,c);
return in;
}
int main(void)
{
Figure f;
cout<<f<<" dfsfghsyj";
Rect y(10,5);
cout<<y;
ex();
Triangle t(1,1,1);
cin>>t;
cout<<t;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgRmlndXJlewoJcHJvdGVjdGVkOgoJCWRvdWJsZSBzPTA7CglwdWJsaWM6CgkJRmlndXJlKCl7CgkvLwkJY291dDw8IkNvbnN0cnVjdG9yIEZpZ3VyZSI8PGVuZGw7CQoJCX0KCQl+RmlndXJlKCl7CgkvLwkJY291dDw8IkRlc3RydXRvciBGaWd1cmUiPDxlbmRsOwoJCX0KCQlkb3VibGUgZ2V0UygpewoJCQlyZXR1cm4gczsKCQl9CgkJCgkJZnJpZW5kICBzdGQ6Om9zdHJlYW0gJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmLCBjb25zdCBGaWd1cmUpOwp9OwpzdGQ6Om9zdHJlYW0gJiBvcGVyYXRvcjw8IChzdGQ6Om9zdHJlYW0gJiBvdXQsIGNvbnN0IEZpZ3VyZSB4KSB7CglvdXQgPDwiUz0iPDwgeC5zPDxlbmRsOwoJb3V0PDwiSGVsbG8iOwoJcmV0dXJuIG91dDsKfQogCmNsYXNzIFRyaWFuZ2xlOnB1YmxpYyBGaWd1cmV7CnB1YmxpYzoKICBpbnQgIHgsIHksIHo7CiAgVHJpYW5nbGUoaW50IGEsIGludCBiLCBpbnQgYykKICB7CiAgCWNvdXQ8PCJDb25zdHJ1Y3RvciBUcmkiPDxlbmRsOwogICAgeCA9IGE7CiAgICB5ID0gYjsKICAgIHogPSBjOwogICAgcz1hK2IrYzsKICB9CiAgZnJpZW5kIHN0ZDo6aXN0cmVhbSAmIG9wZXJhdG9yPj4gKHN0ZDo6aXN0cmVhbSAmLCBUcmlhbmdsZSAmKTsKICAKICB+VHJpYW5nbGUoKXsKCS8vCQljb3V0PDwiRGVzdHJ1dG9yIFRyaWFuZ2xlIjw8ZW5kbDsKCQl9Cn07CgpjbGFzcyBSZWN0OiBwdWJsaWMgRmlndXJlCnsKcHVibGljOgogIGludCB4LCB5OwogIFJlY3QoaW50IGEsIGludCBiKQogIHsKICAJLy9jb3V0PDwiQ29uc3RydWN0b3IgUmVjdCI8PGVuZGw7CiAgICB4ID0gYTsKICAgIHkgPSBiOwogICAgcz1hKmI7CiAgfQogIH5SZWN0KCl7CgkJLy8JY291dDw8IkRlc3RydXRvciBSZWN0Ijw8ZW5kbDsKCQl9Cgp9Owp2b2lkIGV4KCl7CglSZWN0IHgoMSwyKTsgCn0Kc3RkOjppc3RyZWFtICYgb3BlcmF0b3I+PiAoc3RkOjppc3RyZWFtICYgaW4sIFRyaWFuZ2xlICYgeCkgewoJCgljb3V0PDwiSGVsbG8yMjIyIjsKCWludCBhLGIsYzsKCWluID4+IGE+PiBiPj5jOwoJeCA9IFRyaWFuZ2xlKGEsYixjKTsKCXJldHVybiBpbjsKfQppbnQgbWFpbih2b2lkKQp7CglGaWd1cmUgZjsKCWNvdXQ8PGY8PCIgZGZzZmdoc3lqIjsKCVJlY3QgeSgxMCw1KTsKCWNvdXQ8PHk7CglleCgpOwoJVHJpYW5nbGUgdCgxLDEsMSk7CgljaW4+PnQ7Cgljb3V0PDx0OwoJICByZXR1cm4gMDsKfQoK