Destructors
Cleanup and resource deallocation
Interview Relevant: Memory management
Destructors
Called when object goes out of scope or is deleted.
Code Examples
Destructors for resource cleanup.
cpp
1class Resource {
2 int* data;
3
4public:
5 Resource(int size) : data(new int[size]) {
6 cout << "Acquired" << endl;
7 }
8
9 ~Resource() {
10 delete[] data;
11 cout << "Released" << endl;
12 }
13};
14
15void example() {
16 Resource r(100); // "Acquired"
17} // "Released" - destructor called
18
19// Virtual destructor for polymorphism
20class Base {
21public:
22 virtual ~Base() {
23 cout << "Base destroyed" << endl;
24 }
25};
26
27class Derived : public Base {
28 int* extra;
29public:
30 Derived() : extra(new int[10]) {}
31 ~Derived() override {
32 delete[] extra;
33 cout << "Derived destroyed" << endl;
34 }
35};
36
37Base* b = new Derived();
38delete b; // Both destructors called correctly
39
40// Rule of Five (C++11)
41// If you define one of these, define all:
42// - Destructor
43// - Copy constructor
44// - Copy assignment
45// - Move constructor
46// - Move assignment