We recommend using Visual Studio 2017
This documentation is archived and is not being maintained.

Declaring Destructors

Destructors are functions with the same name as the class but preceded by a tilde (~).


The first form of the syntax is used for destructors declared or defined inside a class declaration; the second form is used for destructors defined outside a class declaration.

Several rules govern the declaration of destructors. Destructors:

  • Do not accept arguments.

  • Cannot specify any return type (including void).

  • Cannot return a value using the return statement.

  • Cannot be declared as const, volatile, or static. However, they can be invoked for the destruction of objects declared as const, volatile, or static.

  • Can be declared as virtual. Using virtual destructors, you can destroy objects without knowing their type — the correct destructor for the object is invoked using the virtual function mechanism. Note that destructors can also be declared as pure virtual functions for abstract classes.