I finally came across this on google:
http://www.tads.org/t3doc/doc/sysman/dynobj.htm
It is often useful to create objects dynamically as well. The main reason you'd want to create an object dynamically, rather than define it statically, is that you don't know in advance that you'll need the object at all - or, more typically, you don't know exactly how many instances of the object you'll need. For example, suppose your game includes a pool of water, and you want the player to be able to fill any container with water from the pool. If you could only define objects statically, you'd have to pre-define a sufficient number of "quantity of water" objects to cover each possible container, and you'd have to add new static objects every time you modified your game to add new containers. You'd also have to work out a scheme to keep track of which objects were already in some container, so that you could find an appropriate unused object when the player filled a new container. With dynamic objects, though, you need only define a class for "quantity of water," and then dynamically create a new instance of this class each time the user fills a new container.
I sorta understand this but I am more of a visual learner so
I wish he would have shown an example

(actual code). I may
have to read this a million times to completely understand it.
Books I read or tutorials online really only give you basic examples
which helps but for instance:
int * ptr = new num
int * ptr = new num[];
Showing this helps but when people come across stuff like this:
Character * cPtr = new Character;
It confused me even though I know it is a dynamic object.