initialize a vector in a constructor

For every line you must type, there is a change you will mistype it or forget to do it. Thus, since you must declare the pointer, allocate memory from it, and free the memory

Oh, I know. I just hate when I have to think and code at the same time.

(I guess that's technically optional on a uC)

Uh, no, freeing memory is not optional on a uC.

as opposed to just defining the object, you have the opportunity to make more errors with pointers.

Better to let someone else do the thinking, eh?