As well as a constructor, each class has a destructor method with a name like ~ SomeClass . (On US keyboards, the '~' symbol is normally on the upper left-hand corner of your keyboard, but in other parts of the world you'll find it somewhere else.) We have no choice about the names of the constructor and destructor methods . For any class SomeClass , the constructor is called SomeClass and the destructor is called ~ SomeClass .
When a variable goes out of scope its destructor is automatically called. Thus if your program has a global variable, the variable's destructor is called when your program terminates. If you have a function which has a local variable sctemp in it of type SomeClass , the SomeClass constructor is called when the code execution hits the line where the SomeClass variable is declared, and the SomeClass destructor code for sctemp is called when the execution hits the closing bracket of the function. More precisely, when you hit the closing bracket of a function, the destructors are called for all of the local variables that were declared inside the function. The destructors for local variables are called in the reverse order that the constructors were called.
In the case where you use the new operator to create a pointer to a SomeClass instance, you must explicitly call the delete operator on the pointer to call the destructor and free up the memory.