Unlike a constructor, which must be explicitly invoked with the specification of the class, a destructor is implicitly called as an object is deleted, or when an auto object is at the end of the scope. Consequently, static type information may not be available when a destructor is invoked.