#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