Override Correctness Pitfalls

#include <iostream>
using namespace std;

class Driver {
public:
    virtual void process() {
        cout << "Generic driver processing" << endl;
    }
};

// SPI: Silent override failure (signature mismatch, no override)
class SpiDriver : public Driver {
public:
    void process() override {   // Does NOT override
        cout << "SPI driver processing" << endl;
    }
};

// I2C: Compile-time detected override mismatch
class I2cDriver : public Driver {
public:
    void process() override {   // ERROR: signature mismatch
        cout << "I2C driver processing" << endl;
    }
};

int main() {
    int mode;
    cin >> mode;

    SpiDriver spi;
    I2cDriver i2c;

    Driver* driver = nullptr;

    if (mode == 0) {
        driver = &spi;
    } else {
        driver = &i2c;
    }

    driver->process();

    return 0;
}
Upvote
Downvote
Loading...

Input

0

Expected Output

SPI driver processing