#include <iostream>
using namespace std;
class vector {
public :
int size;
vector( ) {
cout << "In empty constructor\n " ;
this- > size = 5 ;
cout << "size = " << size << endl;
}
vector( int size) {
cout << "In size constructor\n " ;
this- > size = size;
cout << "size = " << size << endl;
}
vector( const vector & v) {
cout << "inside copy constructor\n " ;
this- > size = v.size ;
cout << "size = " << this- > size << endl;
}
vector operator ++ ( ) {
vector v = * this ;
( this- > size) ++ ;
return v;
}
vector operator ++ ( int a) {
cout << "a = " << a << endl;
vector v = * this ;
( this- > size) ++ ;
return v;
}
vector operator+ ( vector & a) {
vector v;
v.size = this- > size + a.size ;
return v;
}
vector& operator= ( vector & a) {
cout << "Inside = assignment operator\n " ;
this- > size = a.size ;
return * this ;
}
~vector( ) {
cout << "In destructor for vector of size = " << this- > size << endl;
}
} ;
int main( int argc, char ** argv) {
vector v;
vector v2( 27 ) ;
vector v3 = v + v2;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgdmVjdG9yIHsKICAgIApwdWJsaWM6CiAgICBpbnQgc2l6ZTsKCiAgICB2ZWN0b3IoKSB7CiAgICAgICAgY291dCA8PCAiSW4gZW1wdHkgY29uc3RydWN0b3JcbiI7CiAgICAgICAgdGhpcy0+c2l6ZSA9IDU7CiAgICAgICAgY291dCA8PCAic2l6ZSA9ICIgPDwgc2l6ZSA8PCBlbmRsOwogICAgfQogICAgCiAgICB2ZWN0b3IoaW50IHNpemUpIHsKICAgICAgICBjb3V0IDw8ICJJbiBzaXplIGNvbnN0cnVjdG9yXG4iOwogICAgICAgIHRoaXMtPnNpemUgPSBzaXplOwogICAgICAgIGNvdXQgPDwgInNpemUgPSAiIDw8IHNpemUgPDwgZW5kbDsKICAgIH0KICAgIAogICAgdmVjdG9yKGNvbnN0IHZlY3RvciAmdikgewogICAgICAgIGNvdXQgPDwgImluc2lkZSBjb3B5IGNvbnN0cnVjdG9yXG4iOwogICAgICAgIHRoaXMtPnNpemUgPSB2LnNpemU7CiAgICAgICAgY291dCA8PCAic2l6ZSA9ICIgPDwgdGhpcy0+c2l6ZSA8PCBlbmRsOwogICAgfQogICAgCiAgICB2ZWN0b3Igb3BlcmF0b3IgKysoKSB7CiAgICAgICAgdmVjdG9yIHYgPSAqdGhpczsKICAgICAgICAodGhpcy0+c2l6ZSkrKzsKICAgICAgICByZXR1cm4gdjsKICAgIH0KICAgIAogICAgdmVjdG9yIG9wZXJhdG9yICsrKGludCBhKSB7CiAgICAgICAgY291dCA8PCAiYSA9ICIgPDwgYSA8PCBlbmRsOwogICAgICAgIHZlY3RvciB2ID0gKnRoaXM7CiAgICAgICAgKHRoaXMtPnNpemUpKys7CiAgICAgICAgcmV0dXJuIHY7CiAgICB9CiAgICAKICAgIHZlY3RvciBvcGVyYXRvcisodmVjdG9yICZhKSB7CiAgICAgICAgdmVjdG9yICB2OwogICAgICAgIHYuc2l6ZSA9IHRoaXMtPnNpemUgKyBhLnNpemU7CiAgICAgICAgcmV0dXJuIHY7CiAgICB9CiAgICAKICAgIHZlY3RvciYgb3BlcmF0b3I9KHZlY3RvciAmYSkgewogICAgICAgIGNvdXQgPDwgIkluc2lkZSA9IGFzc2lnbm1lbnQgb3BlcmF0b3JcbiI7CiAgICAgICAgdGhpcy0+c2l6ZSA9IGEuc2l6ZTsKICAgICAgICByZXR1cm4gKnRoaXM7CiAgICB9CiAgICAKICAgIH52ZWN0b3IoKSB7CiAgICAgICAgY291dCA8PCAiSW4gZGVzdHJ1Y3RvciBmb3IgdmVjdG9yIG9mIHNpemUgPSAiIDw8IHRoaXMtPnNpemUgPDwgZW5kbDsKICAgIH0KICAgIAp9OwoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CiAgICB2ZWN0b3IgdjsKICAgIHZlY3RvciB2MigyNyk7CiAgICB2ZWN0b3IgdjMgPSB2ICsgdjI7CiAgICByZXR1cm4gMDsKfQo=