Destructors in C++ Notes | Basic Computer Engineering | RGPV BTech First Year

Destructors in C++ Notes | Basic Computer Engineering | RGPV BTech First Year


Destructors in C++

Destructor C++ рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ Member Function рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХрд┐рд╕реА Object рдХреЗ рд╕рдорд╛рдкреНрдд (Destroy) рд╣реЛрдиреЗ рдкрд░ Compiler рд╕реНрд╡рддрдГ (Automatically) Execute рдХрд░рддрд╛ рд╣реИред Destructor рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп Object рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ Memory рддрдерд╛ рдЕрдиреНрдп System Resources рдХреЛ Release рдХрд░рдирд╛ рд╣реЛрддрд╛ рд╣реИ рддрд╛рдХрд┐ Memory Leak рдЬреИрд╕реА рд╕рдорд╕реНрдпрд╛рдПрдБ рдЙрддреНрдкрдиреНрди рди рд╣реЛрдВред

Object Oriented Programming (OOP) рдореЗрдВ Constructor Object рдХреЛ Initialize рдХрд░рддрд╛ рд╣реИ рдЬрдмрдХрд┐ Destructor Object рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рдЙрд╕рдХреА рд╕рдлрд╛рдИ (Cleanup) рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП Constructor рдФрд░ Destructor рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рдкреВрд░рдХ (Complementary) рдорд╛рдиреЗ рдЬрд╛рддреЗ рд╣реИрдВред

Constructor тЖТ Object Initialization

Destructor тЖТ Resource Cleanup

Introduction to Destructor

рдЬрдм Program рдореЗрдВ рдХрд┐рд╕реА Object рдХрд╛ рдХрд╛рд░реНрдп рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддрдм рдЙрд╕ Object рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ Memory рдХреЛ рд╡рд╛рдкрд╕ Operating System рдХреЛ рджреЗрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдП рддреЛ Program рдореЗрдВ Memory Leak рд╣реЛ рд╕рдХрддрд╛ рд╣реИред C++ рдореЗрдВ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП Destructor рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Destructor рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ Dynamic Memory Allocation (new рдПрд╡рдВ delete) рд╡рд╛рд▓реЗ Programs рдореЗрдВ рдЕрддреНрдпрдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ Runtime рдкрд░ Allocate рдХреА рдЧрдИ Memory рдХреЛ рдореБрдХреНрдд (Free) рдХрд░рддрд╛ рд╣реИред


Definition of Destructor

Destructor рдПрдХ Special Member Function рд╣реИ рдЬрд┐рд╕рдХрд╛ рдирд╛рдо Class рдХреЗ рдирд╛рдо рдХреЗ рдкрд╣рд▓реЗ ~ (Tilde) Symbol рд▓рдЧрд╛рдХрд░ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдХреЛрдИ Return Type рдирд╣реАрдВ рд╣реЛрддрд╛ рддрдерд╛ Object Destroy рд╣реЛрддреЗ рд╣реА рдпрд╣ Automatically Execute рд╣реЛрдХрд░ Resources Release рдХрд░рддрд╛ рд╣реИред


Need of Destructor

  • Dynamic Memory Release рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Memory Leak рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдПред
  • Files Close рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Database Connections Release рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Allocated Resources рдХреЛ Free рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Program Performance рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред
  • Automatic Cleanup рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Reliable Software Development рдХреЗ рд▓рд┐рдПред

Characteristics of Destructor

  • Destructor рдХрд╛ рдирд╛рдо Class рдХреЗ рдирд╛рдо рдХреЗ рдкрд╣рд▓реЗ ~ рд▓рдЧрд╛рдХрд░ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рдЗрд╕рдХрд╛ рдХреЛрдИ Return Type рдирд╣реАрдВ рд╣реЛрддрд╛ред
  • Destructor рдореЗрдВ рдХреЛрдИ Parameter рдирд╣реАрдВ рд╣реЛрддрд╛ред
  • Object Destroy рд╣реЛрддреЗ рд╣реА Automatically Execute рд╣реЛрддрд╛ рд╣реИред
  • рдПрдХ Class рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ Destructor рд╣реЛрддрд╛ рд╣реИред
  • Destructor рдХреЛ Overload рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ред
  • Memory рдПрд╡рдВ Resources Release рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • Object рдХреЗ Life Cycle рдХрд╛ рдЕрдВрддрд┐рдо рдЪрд░рдг рд╣реЛрддрд╛ рд╣реИред

Rules of Destructor

Rule Description
Same Name Class Name рдХреЗ рдкрд╣рд▓реЗ ~ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
No Return Type Destructor рдХреЛрдИ Return Value рдирд╣реАрдВ рджреЗрддрд╛ред
No Parameters Destructor Parameters рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ред
Only One Destructor рдПрдХ Class рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ Destructor рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
Automatic Execution Object Destroy рд╣реЛрддреЗ рд╣реА рд╕реНрд╡рддрдГ Execute рд╣реЛрддрд╛ рд╣реИред

Syntax of Destructor

class Student { public: ~Student() { cout << "Destructor Called"; } };

рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ ~Student() Destructor рд╣реИред Program рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдпрд╛ Object рдХреЗ Scope рд╕реЗ рдмрд╛рд╣рд░ рдЬрд╛рдиреЗ рдкрд░ рдпрд╣ рд╕реНрд╡рддрдГ Execute рд╣реЛрдЧрд╛ред


Working of Destructor

Destructor Object рдХреЗ рдкреВрд░реЗ Life Cycle рдХреЗ рдЕрдВрдд рдореЗрдВ Execute рд╣реЛрддрд╛ рд╣реИред рдЬрдм Object Scope рд╕реЗ рдмрд╛рд╣рд░ рдЬрд╛рддрд╛ рд╣реИ, Function рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдпрд╛ delete Operator рджреНрд╡рд╛рд░рд╛ Object Destroy рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм Destructor Automatically Call рд╣реЛрдХрд░ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ Cleanup Operations рдХрд░рддрд╛ рд╣реИред

  1. Object рдХрд╛ рдХрд╛рд░реНрдп рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред
  2. Destructor Automatically Call рд╣реЛрддрд╛ рд╣реИред
  3. Allocated Memory Release рд╣реЛрддреА рд╣реИред
  4. Open Files рдПрд╡рдВ Resources Close рд╣реЛрддреЗ рд╣реИрдВред
  5. Object рдкреВрд░реА рддрд░рд╣ Destroy рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

Destructor Execution Process

Destructor Object рдХреЗ Life Cycle рдХрд╛ рдЕрдВрддрд┐рдо рдЪрд░рдг рд╣реЛрддрд╛ рд╣реИред рдЬрдм Object рдХрд╛ Scope рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ Program Explicit рд░реВрдк рд╕реЗ Object рдХреЛ Delete рдХрд░рддрд╛ рд╣реИ, рддрдм Destructor Automatically Execute рд╣реЛрдХрд░ Object рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА Resources рдХреЛ Release рдХрд░рддрд╛ рд╣реИред

Object Created тЖТ Constructor Called

Object Destroyed тЖТ Destructor Called

Memory Deallocation

рдпрджрд┐ Program рдореЗрдВ new Operator рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Dynamic Memory Allocate рдХреА рдЧрдИ рд╣реИ, рддреЛ Destructor рдХреЗ рдЕрдВрджрд░ delete Operator рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрд╕ Memory рдХреЛ Release рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ Memory Leak рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИред

class Student { int *marks; public: Student() { marks = new int; } ~Student() { delete marks; } };

рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ Constructor Memory Allocate рдХрд░рддрд╛ рд╣реИ рдЬрдмрдХрд┐ Destructor рдЙрд╕реА Memory рдХреЛ Release рдХрд░рддрд╛ рд╣реИред


Resource Cleanup

Destructor рдХреЗрд╡рд▓ Memory рд╣реА рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдЕрдиреНрдп Resources рдЬреИрд╕реЗ File Handles, Network Connections, Database Connections, Printer Handles рддрдерд╛ рдЕрдиреНрдп Operating System Resources рдХреЛ рднреА Release рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Resource Destructor Action
Dynamic Memory delete Operator рджреНрд╡рд╛рд░рд╛ Free рдХрд░рддрд╛ рд╣реИред
File File Close рдХрд░рддрд╛ рд╣реИред
Database Connection Connection Close рдХрд░рддрд╛ рд╣реИред
Socket Network Resource Release рдХрд░рддрд╛ рд╣реИред

Example of Destructor

#include<iostream> using namespace std; class Demo { public: Demo() { cout << "Constructor Called"; } ~Demo() { cout << "Destructor Called"; } }; int main() { Demo d1; return 0; }

рдЬрдм Program Execute рд╣реЛрдЧрд╛ рддрдм рдкрд╣рд▓реЗ Constructor Execute рд╣реЛрдЧрд╛ рдФрд░ Program рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ Destructor Automatically Execute рд╣реЛрдЧрд╛ред


Advantages of Destructor

  • Automatic Resource Cleanup.
  • Prevents Memory Leak.
  • Improves Program Stability.
  • Automatic File Closing.
  • Releases Dynamic Memory.
  • Improves Resource Management.
  • Supports Reliable Programming.
  • Reduces Manual Cleanup Code.

Real Life Applications

Application Role of Destructor
Bank Management System Releases Account Objects and Memory.
Hospital Management System Closes Patient Records and Resources.
Database Applications Closes Database Connections.
File Processing Software Automatically Closes Files.

Difference Between Constructor and Destructor

Constructor Destructor
Object Create рд╣реЛрдиреЗ рдкрд░ Automatically Execute рд╣реЛрддрд╛ рд╣реИред Object Destroy рд╣реЛрдиреЗ рдкрд░ Automatically Execute рд╣реЛрддрд╛ рд╣реИред
Object рдХреЛ Initialize рдХрд░рддрд╛ рд╣реИред Resources рдПрд╡рдВ Memory рдХреЛ Release рдХрд░рддрд╛ рд╣реИред
рдПрдХ Class рдореЗрдВ Multiple Constructors рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ Class рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ Destructor рд╣реЛрддрд╛ рд╣реИред
Parameters рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдХреЛрдИ Parameter рдирд╣реАрдВ рд╣реЛрддрд╛ред
Overloading рд╕рдВрднрд╡ рд╣реИред Overloading рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред

Destructor with Dynamic Memory Allocation

рдпрджрд┐ Program рдореЗрдВ new Operator рджреНрд╡рд╛рд░рд╛ Memory Allocate рдХреА рдЧрдИ рд╣реИ рддреЛ Destructor рдХреЗ рдЕрдВрджрд░ delete рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Memory рдХреЛ Release рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛ Program рдореЗрдВ Memory Leak рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

class Employee { int *salary; public: Employee() { salary = new int; } ~Employee() { delete salary; } };

Complete C++ Program using Destructor

#include<iostream> using namespace std; class Student { public: Student() { cout<<"Constructor Called"<

Advantages of Destructor

  • Automatic Memory Cleanup.
  • Prevents Memory Leak.
  • Improves Program Performance.
  • Automatic Resource Management.
  • Closes Open Files Automatically.
  • Releases Database Connections.
  • Reliable Object Destruction.
  • Reduces Manual Coding.

Limitations of Destructor

  • Cannot Accept Parameters.
  • Cannot Return Any Value.
  • Cannot Be Overloaded.
  • Only One Destructor per Class.
  • Complex Cleanup Logic May Reduce Readability.

Industrial Importance

рдЖрдЬ рдХреЗ рд╕рдордп рдореЗрдВ Banking Software, ERP Systems, Hospital Management Software, Database Applications, Operating Systems рддрдерд╛ Embedded Systems рдЬреИрд╕реЗ рдмрдбрд╝реЗ Software Projects рдореЗрдВ Destructor рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрддреНрдпрдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред Resource Management рддрдерд╛ Memory Management рдХреЗ рд▓рд┐рдП Destructor Object Oriented Programming рдХрд╛ рдПрдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рднрд╛рдЧ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред


Viva Questions

  1. What is Destructor?
  2. Why Destructor is Used?
  3. Explain Syntax of Destructor.
  4. When Destructor is Called?
  5. Can Destructor Have Parameters?
  6. Can Destructor Be Overloaded?
  7. Differentiate Constructor and Destructor.
  8. Explain Dynamic Memory Cleanup.
  9. Write Program Using Destructor.
  10. What is Memory Leak?

Exam Oriented Important Questions

  1. Define Destructor with suitable example.
  2. Explain Characteristics of Destructor.
  3. Write Syntax of Destructor.
  4. Explain Destructor with Dynamic Memory Allocation.
  5. Differentiate Constructor and Destructor.
  6. Write C++ Program using Destructor.
  7. Explain Advantages of Destructor.
  8. What are the Applications of Destructor?
  9. Explain Memory Management in C++.
  10. Write Short Note on Destructor.

Conclusion

Destructor C++ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг Special Member Function рд╣реИ рдЬреЛ Object рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ Automatically Execute рд╣реЛрдХрд░ Memory рддрдерд╛ рдЕрдиреНрдп Resources рдХреЛ Release рдХрд░рддрд╛ рд╣реИред рдпрд╣ Program рдХреЛ Memory Leak рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ рддрдерд╛ Resource Management рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ C++ Programmer рддрдерд╛ RGPV B.Tech рд╡рд┐рджреНрдпрд╛рд░реНрдереА рдХреЗ рд▓рд┐рдП Destructor рдХреА рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА, Syntax рдПрд╡рдВ Applications рдХреЛ рд╕рдордЭрдирд╛ рдЕрддреНрдпрдВрдд рдЖрд╡рд╢реНрдпрдХ рд╣реИред

Related Articles

Arrays in C++ Notes | One Dimensional & Two Dimensional Arrays with Programs | Basic Computer Engineering | RGPV BTech First Year

Arrays ...

Read More тЖТ

Control Statements in C++ Notes | Decision Making & Looping Statements | Basic Computer Engineering | RGPV BTech First Year

Control...

Read More тЖТ

Expressions in C++ Notes | Types of Expressions, Evaluation & Expression Statements | Basic Computer Engineering | RGPV BTech First Year

Express...

Read More тЖТ

Operators in C++ Notes | Arithmetic, Relational, Logical, Assignment, Bitwise Operators | Basic Computer Engineering | RGPV BTech First Year

Operato...

Read More тЖТ

Program Structure in C++ Notes | Basic Computer Engineering | RGPV BTech First Year

Program...

Read More тЖТ