Possible Duplicate:
In c++ what does a tilde “~” before a function name signify?
What is the difference between the line with the ~ and the other line?
public:
myClass() {};
~myClass() {};
Possible Duplicate:
In c++ what does a tilde “~” before a function name signify?
What is the difference between the line with the ~ and the other line?
public:
myClass() {};
~myClass() {};
myClass(){}
is called constructor and ~myClass(){}
is called destructor!
Constructor is invoked when an object is created, and destructor is invoked when an object is destroyed.
myClass *pObj = new myClass(); //constructor is invoked;
//work with pObj;
delete pObj; //destructor is invoked;
That is an example when you use new
and delete
. new
causes constructor to be invoked, and delete
causes destructor to be invoked.
Lets see another example:
{
myClass Obj; //constructor is automatically invoked;
//work with Obj;
} //<--here Obj goes out of scope which causes destructor to be automatically invoked;
With an automatic object, constructor is automatically invoked, and when the object goes out of scope, the destructor is automatically invoked.
The function "myClass" is a constructor and is invoked when an object of that type is created. A class can provide multiple different constructors that can be used to create (i.e. construct) objects of that type.
The function "~myClass" is a destructor and is invoked when an object of that type is destroyed (which occurs when an automatic storage-allocated instance goes out of scope or when a pointer to a dynamically allocated instance of that type has been deleted using the delete
operator). Whereas a class can provide multiple constructors, a class can only provide a single destructor.
When a class has virtual methods, the destructor should also be marked virtual.