#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;
}
