Well the Contestant class contains strings of first name, last name, age, and country. At run time the user passes a input file with various commands and the info that Contestant class is supposed to hold. So I have no idea how long these strings might be.
keep also in mind that whenever u allocate (using the -new- operator) an object which has a constructor, AN INITIALIZATION is mandatory.
This is simple when u haven't defined any constructor, since then the default constructor is called. On the other hand if u defined only e.g. a 2-argument constructor u cannot use the expression u wrote at the beginning of the post, unless u define a no-argument constructor.
BOTTOM LINE IS:
Don't allocate dynamically unless you need to.
And you need to do it if you don't know (for example) number of contestors.
But even then, you could make a vector<Contestant> to store all of them