What is destructor?
Destructor is a member function which destructs or deletes an object.
Properties of Destructor:
- Destructor function is automatically invoked when the objects are destroyed.
- It cannot be declared static or const.
- The destructor does not have arguments.
- It has no return type not even void.
- An object of a class with a Destructor cannot become a member of the union.
- A destructor should be declared in the public section of the class.
- The programmer cannot access the address of destructor.
When is destructor called?
A destructor function is called automatically when the object goes out of scope:
(1) the function ends
(2) the program ends
(3) a block containing local variables ends
(4) a delete operator is called
How destructors are different from a normal member function?
Destructors have same name as the class preceded by a tilde (~)
Destructors don’t take any argument and don’t return anything
Can there be more than one destructor in a class?
No, there can only one destructor in a class with classname preceded by ~, no parameters and no return type.
When do we need to write a user-defined destructor?
If we do not write our own destructor in class, compiler creates a default destructor for us. The default destructor works fine unless we have dynamically allocated memory or pointer in class. When a class contains a pointer to memory allocated in class, we should write a destructor to release memory before the class instance is destroyed. This must be done to avoid memory leak.
Can a destructor be virtual?
Yes, In fact, it is always a good idea to make destructors virtual in base class when we have a virtual function. See virtual destructor for more details.
You may like to take a quiz on destructors.
Related Articles :
Constructors in C++
Pure virtual destructor in C++
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Rated as one of the most sought after skills in the industry, own the basics of coding with our C++ STL Course and master the very concepts by intense problem-solving.
- Playing with Destructors in C++
- C++ Interview questions based on constructors/ Destructors.
- Print matrix elements from top-left to bottom right in diagonally upward manner
- Sum of first N natural numbers with alternate signs
- Difference between std::set vs std::vector in C++ STL
- Vector of Maps in C++ with Examples
- Data Conversion in C++
- Check if a right-angled triangle can be formed by the given side lengths
- Length of longest subsequence consisting of distinct adjacent elements
- Print a 2D Array or Matrix using single loop
- C Program to sort rows of the Matrix
- Find a pair with sum N having minimum absolute difference
- Order of execution in initializer list in C++
- Unusual behaviour with character pointers
Improved By : itskawal2000