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) рдорд╛рдиреЗ рдЬрд╛рддреЗ рд╣реИрдВред
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
рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ ~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 рдХрд░рддрд╛ рд╣реИред
- Object рдХрд╛ рдХрд╛рд░реНрдп рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред
- Destructor Automatically Call рд╣реЛрддрд╛ рд╣реИред
- Allocated Memory Release рд╣реЛрддреА рд╣реИред
- Open Files рдПрд╡рдВ Resources Close рд╣реЛрддреЗ рд╣реИрдВред
- Object рдкреВрд░реА рддрд░рд╣ Destroy рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
Destructor Execution Process
Destructor Object рдХреЗ Life Cycle рдХрд╛ рдЕрдВрддрд┐рдо рдЪрд░рдг рд╣реЛрддрд╛ рд╣реИред рдЬрдм Object рдХрд╛ Scope рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ Program Explicit рд░реВрдк рд╕реЗ Object рдХреЛ Delete рдХрд░рддрд╛ рд╣реИ, рддрдм Destructor Automatically Execute рд╣реЛрдХрд░ Object рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА Resources рдХреЛ Release рдХрд░рддрд╛ рд╣реИред
Object Destroyed тЖТ Destructor Called
Memory Deallocation
рдпрджрд┐ Program рдореЗрдВ new Operator рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Dynamic Memory Allocate рдХреА рдЧрдИ рд╣реИ, рддреЛ Destructor рдХреЗ рдЕрдВрджрд░ delete Operator рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрд╕ Memory рдХреЛ Release рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ Memory Leak рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИред
рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ 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
рдЬрдм 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 рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
Complete C++ Program using Destructor
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
- What is Destructor?
- Why Destructor is Used?
- Explain Syntax of Destructor.
- When Destructor is Called?
- Can Destructor Have Parameters?
- Can Destructor Be Overloaded?
- Differentiate Constructor and Destructor.
- Explain Dynamic Memory Cleanup.
- Write Program Using Destructor.
- What is Memory Leak?
Exam Oriented Important Questions
- Define Destructor with suitable example.
- Explain Characteristics of Destructor.
- Write Syntax of Destructor.
- Explain Destructor with Dynamic Memory Allocation.
- Differentiate Constructor and Destructor.
- Write C++ Program using Destructor.
- Explain Advantages of Destructor.
- What are the Applications of Destructor?
- Explain Memory Management in C++.
- 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 тЖТ