Both lines are in fact correct but do subtly different things.
The first line creates a new object on the stack by calling a constructor of the format Thing(const char*).
The second one is a bit more complex. It essentially does the following
- Create an object of type
Thingusing the constructorThing(const char*) - Create an object of type
Thingusing the constructorThing(const Thing&) - Call
~Thing()on the object created in step #1