#include <iostream>
using namespace std;
class Buffer {
private:
int data;
public:
Buffer() {
cout << "Buffer created" << endl;
}
~Buffer() {
cout << "Buffer destroyed" << endl;
}
void write(int value) {
data = value;
}
int read() const {
return data;
}
};
class Driver {
private:
// Driver must own the buffer
Buffer *buff;
public:
// Constructor should accept input value and store it in buffer
Driver(int v) {
buff = new Buffer;
buff->write(v);
cout << "Driver initialized" << endl;
}
void print() const {
// Print stored value
cout << "Stored value: " << buff->read() << endl;
}
// Add destructor to observe shutdown
~Driver() {
cout << "Driver destroyed" << endl;
delete buff;
}
};
int main() {
int value;
cin >> value;
{
Driver drv(value);
drv.print();
}
return 0;
}
Input
10
Expected Output
Buffer created Driver initialized Stored value: 10 Driver destroyed Buffer destroyed