#include #include using namespace std; class myVector{ int vsize, maxsize; int* array; void alloc_new(); friend ostream& operator<< (ostream &out, myVector&); friend istream& operator>> (istream &in, myVector&); public: myVector(); myVector(int); myVector( myVector&); //copy constructor ~myVector(); void push_back(int); int size(); void setSize(int); int operator[](int); myVector operator+(myVector&); int at(int i); }; myVector::myVector() { maxsize = 20; array = new int[maxsize]; vsize = 0; } myVector::myVector(int i) { maxsize = i; array = new int[maxsize]; vsize = 0; } myVector::myVector( myVector& v) { cout << "Copy constructor called." << endl; if(v.maxsize == 0) cout << "Error!" << endl; else { cout << "v.maxsive: " << v.maxsize << endl; array = new int[v.maxsize]; } cout << "v.size(): " << v.size() << endl; for(int i=0; i< v.size(); i++) { this->array[i] = v.array[i]; cout <<"v.array: " << v.array[i] << endl; cout << "result.array: " << array[i] << endl; } cout << "Returning from Copy constructor." << endl; } myVector::~myVector() { delete[] array; } void myVector::push_back(int i) { if (vsize + 1 > maxsize) alloc_new(); array[vsize] = i; vsize++; } int myVector::operator[](int i) { return array[i]; } int myVector::at(int i) { if (i < vsize) return array[i]; throw 10; } void myVector::alloc_new() { cout << "Allocating new memory" << endl; maxsize = vsize * 2; int* tmp = new int[maxsize]; for (int i = 0; i < vsize; i++) tmp[i] = array[i]; delete[] array; array = tmp; } int myVector::size() { return vsize; } void myVector::setSize(int i) { vsize = i; } myVector myVector::operator+(myVector& a) { cout << "Addition operator overloaded" << endl; myVector result; result.array = new int[a.maxsize]; for (int i = 0; i < a.size(); i++) result.array[i] = this->array[i] + a.array[i]; result.setSize(a.size()); return result; } ostream& operator<< (ostream &out, myVector& a) { for (int i = 0; i < a.size(); i++) out << a[i] << " "; return out; } istream& operator>> (istream &in, myVector& a) { int tmp, lol; cin >> tmp; for (int i = 0; i < tmp; i++) { cin >> lol; a.push_back(lol); } return in; } int main() { myVector vec; myVector vec2; myVector c; int width = 15; cout << "Input vector a\n"; cin >> vec; // In: 3 1 2 3 cout << "Input vector b\n"; cin >> vec2; // In: 3 4 5 6 cout << setw(width) << "Vector a: " << vec << endl; cout << setw(width) << "Vector b: " << vec2 << endl; c = vec + vec2; cout << setw(width) << "c = a + b: " << c << endl; system("PAUSE"); return 0; }