// demonstrates overloaded assingment with an object containing array // Mikhail Nesterenko // 11/2/2014 class MyClass{ public: MyClass(int); // regular constructuctor MyClass&operator= (const MyClass&); // overloaded assingment void addNum(int); // regular member function private: int *d; int size; }; MyClass::MyClass(int n){ size=n; d = new int[size]; for(int i=0; i< size; ++i) d[i]=0; } MyClass& MyClass::operator= (const MyClass& rhs){ if (this != &rhs){ // if not same size=rhs.size; delete [] d; d=new int[size]; for (int i=0; i < size; i++) d[i]=rhs.d[i]; } return *this; // return lhs } // adds "n" to every element of the array void MyClass::addNum(int n){ for(int i=0; i < size; ++i) d[i] += n; } int main(){ MyClass firstObj(5); // constructor allocates dynamic array firstObj.addNum(10); // adding ten to elements MyClass secondObj(22), thirdObj(33); firstObj = firstObj; // self-assignment thirdObj = secondObj = firstObj; // stacked assignment }