### Can someone explain enumerations?

I've read through the section in my book about enumerations multiple times, and watched several videos. For some reason I just can't grasp the idea of enumerations. Can someone give me a detailed explanation of a enumeration, and a example or two of how they are used? You might have to slightly dumb it down, I'm fairly new to programming. Thanks for any help in advance.
Once upon a time, people used to define symbolic constants via macros, like:
 ``1234`` ``````#define ONE 1 #define TWO 2 #define THREE 3 #define FOUR 5 // oops, mistake ``````

Then they thought, how can we make the process easier? And so enum was invented.
 ``12345678`` ``````enum { ONE = 1, // because it would normally start from 0, reset count to 1 TWO, // 2 by default THREE, // 3 by default SIXTY = 60, SIXTYONE, // 61 by default SIXTYTWO // 62 by default };``````

Now you can just use `ONE`, `TWO`, on their own.
You can also give your enum collection a label. In C++ it would work like this:
 ``123456789101112131415161718`` ``````enum Days { Monday, // 0 by default Tuesday, // 1 by default ... Wednesday, Thursday, Friday, Saturday, Sunday // 6 by default }; void dayFunction(Days d) // this function expects a day from Monday to Sunday { } int main() { dayFunction(Wednesday); }``````

http://en.wikipedia.org/wiki/Enumerated_type#C_and_syntactically_similar_languages
http://www.parashift.com/c++-faq/enumeration-type-ops.html
http://publib.boulder.ibm.com/infocenter/macxhelp/v6v81/topic/com.ibm.vacpp6m.doc/language/ref/clrc03ec.htm
http://www.enel.ucalgary.ca/People/Norman/enel315_winter1997/enum_types/