A constructor is never directly invoked by the user. Instead, the constructor is implicitly invoked behind the scenes when an object is created. This can be due to a declaration statement, or as part of a dynamic allocation performed using the operator new.