Reusing Base Initialization

#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;
}
Upvote
Downvote
Loading...

Input

0

Expected Output

Base driver init start Base driver init complete SPI driver initialized