Constructors/destructors, type safety, overridability.
- Constructors/destructors: unlike malloc(sizeof(Fred)),
new Fred() calls Fred's constructor. Similarly, delete p calls
- Type safety: malloc() returns a void* which isn't type safe.
new Fred() returns a pointer of the right type (a Fred*).
- Overridability: new is an operator that can be overridden by a
class, while malloc() is not overridable on a per-class basis.