I was reading an article about this and I'm totally lost as to what the purpose of using operator overlaoding is. Could someone give me an explaination as to what it's main purpose is?

While I'm at it, I'm also confused on the purpose of copy constructors. I have an idea as to what they're used for so I'm gonna shoot and if it's wrong or anything, correct me because I'm sure I'm thinking the totally wrong thing.

I think a copy constructor would be more useful when you have a VERY VERY generic class that you want to create more specific classes out of but use the private members of the generic class in the more specific one.

Again, I'm probably thinking the totally wrong thing but I'm lost so any help would be appreciated. Thanks in advance.