I'm having a lot of trouble with operator overloading. I'm just not sure what it's used for, and when it should be used to generate a desired result. This closely ties with my confusion that, when creating a copy constructor (which, as I understand, is called whenever a function passes-by-value an object of the class type), it's generally understood that the = assignment operator should be overloaded and a destructor should be explicitly defined.
Any help would be greatly appreciated.