107. Destructor Order Inheritance

#include <iostream>
using namespace std;

// Base driver class
class BaseDriver {
public:
    BaseDriver() {
        cout << "Base driver initialized" << endl;
    }

    ~BaseDriver() {
        cout << "Base driver destroyed" << endl;
    }
};

// Derived driver class
class DerivedDriver : public BaseDriver {
public:
    DerivedDriver() {
        cout << "Derived driver initialized" << endl;
    }

    ~DerivedDriver() {
        cout << "Derived driver destroyed" << endl;
    }
};

int main() {
    int value;
    cin >> value;

    DerivedDriver driver;

    return 0;
}

Explanation & Logic Summary:
When an object goes out of scope, C++ destroys it in reverse order of construction.
The derived class is destroyed first, followed by the base class.

Firmware Relevance & Real-World Context:
In embedded systems:

  • Derived drivers often release device-specific resources (disable peripheral, stop DMA)
  • Base drivers release shared resources (clocks, buses, power domains)

Destructor order guarantees that:

  • Hardware is shut down safely
  • Shared resources are not released before dependent peripherals

 

 

 

 

 

Loading...

Input

5

Expected Output

Base driver initialized Derived driver initialized Derived driver destroyed Base driver destroyed