#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 RegisterBlock { private: int reg; public: RegisterBlock() { cout << "RegisterBlock created" << endl; } ~RegisterBlock() { cout << "RegisterBlock destroyed" << endl; } void write(int value) { reg = value; } int read() const { return reg; } }; class Driver { private: Buffer buffer; // Declare Buffer first RegisterBlock regiter; // Declare RegisterBlock second public: // Constructor must store input values // Print "Driver initialized" Driver (int a, int b) { buffer.write(a); regiter.write(b); std::cout <<"Driver initialized\n"; } void print() const { // Print buffer value std::cout <<"Buffer value: " <<buffer.read(); std::cout << "\nRegister value: "<< regiter.read(); // Print register value } ~Driver () { std::cout <<"\nDriver destroyed\n"; } // Destructor must print "Driver destroyed" }; int main() { int a, b; cin >> a >> b; { Driver drv(a, b); drv.print(); } return 0; }
Test Cases
Test Results
Input
10 20
Expected Output
Buffer created RegisterBlock created Driver initialized Buffer value: 10 Register value: 20 Driver destroyed RegisterBlock destroyed Buffer destroyed