#include <iostream> using namespace std; // Create BaseDriver class // Add function initBase() // Prints base initialization messages class BaseDriver { public: void initBase() { cout << "Base driver init start" << endl; cout << "Base driver init complete" << endl; } }; // Create SpiDriver class // Inherits publicly from BaseDriver // Add function initSpi() // Calls initBase() // Prints "SPI driver initialized" class SpiDriver : public BaseDriver { public: void initSpi() { initBase(); cout << "SPI driver initialized" << endl; } }; // Create I2cDriver class // Inherits publicly from BaseDriver // Add function initI2c() // Calls initBase() // Prints "I2C driver initialized" class I2cDriver : public BaseDriver { public: void initI2c() { initBase(); cout << "I2C driver initialized" << endl; } }; int main() { int mode; cin >> mode; SpiDriver spi; I2cDriver i2c; // If mode == 0, create SpiDriver and call initSpi() if(mode == 0) { spi.initSpi(); } // If mode == 1, create I2cDriver and call initI2c() else if(mode == 1) { i2c.initI2c(); } return 0; }
Test Cases
Test Results
Input
0
Expected Output
Base driver init start Base driver init complete SPI driver initialized