class Pocisk{
public:
virtual Pocisk* clone() = 0;
virtual ~Pocisk() {}
};
class Pochodna1 : public Pocisk {
public:
virtual Pocisk* clone()
{
return new Pochodna1(*this);
}
};
int main() {
Pocisk* p1 = new Pochodna1();
Pocisk* p2 = p1->clone();
delete p1;
delete p2;
return 0;
}
Y2xhc3MgUG9jaXNrewogICAgICBwdWJsaWM6CiAgICAgICAgICAgIHZpcnR1YWwgUG9jaXNrKiBjbG9uZSgpID0gMDsKICAgICAgICAgICAgdmlydHVhbCB+UG9jaXNrKCkge30KfTsKIApjbGFzcyBQb2Nob2RuYTEgOiBwdWJsaWMgUG9jaXNrIHsKICAgICAgcHVibGljOgogICAgICAgICAgICB2aXJ0dWFsIFBvY2lzayogY2xvbmUoKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUG9jaG9kbmExKCp0aGlzKTsKICAgICAgICAgICAgfQp9OwoKaW50IG1haW4oKSB7CglQb2Npc2sqIHAxID0gbmV3IFBvY2hvZG5hMSgpOwoJUG9jaXNrKiBwMiA9IHAxLT5jbG9uZSgpOwoJZGVsZXRlIHAxOwoJZGVsZXRlIHAyOwoJcmV0dXJuIDA7Cn0=