#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;
}Expected Output
SPI driver processing