I have this following class, I overload the + operator on my class vector.
I have defined my own copy constructor as well. This is the code ::
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;
    }
};
And this is main ::
int main(int argc, char** argv) {
    vector v;
    vector v2(27);
    vector v3 = v + v2;
    return 0;
}
I inserted cout statements in my constructors to see which constructor is called when.
According to what I understand, in my line vector v3 = v + v2 the copy constructor shall be called, since we are initializing the object during its call, so after the computation v + v2 copy constructor shall be called. But it doesn't. I also tried to overload the = operator to check if it is assigning values, but that is not happening either.
The output of the about program is this ::
In empty constructor
size = 5
In size constructor
size = 27
In empty constructor
size = 5
In destructor for vector of size = 32
In destructor for vector of size = 27
In destructor for vector of size = 5
In my overloaded function of +, i return the resultant vector by value, so it should be copied I believed. 
Why doesn't the copy constructor get called??
Thanks for any help in advance.
Ideone link (if that helps) :: http://ideone.com/S9EtjR
