#include <iostream> using namespace std; // Base driver class class BaseDriver { public: BaseDriver(int v) : baseConfig(v) {} void printBase() const { cout << "Base config " << baseConfig << endl; } protected: int baseConfig; }; // Derived driver class class DerivedDriver : public BaseDriver { public: DerivedDriver(int b, int d) : BaseDriver(b), derivedConfig(d) {} void printDerived() const { cout << "Derived config " << derivedConfig << endl; } private: int derivedConfig; }; // Driver processing function void processDriver(const BaseDriver& driver) { driver.printBase(); } // Modify or extend the program so derived configuration is also printed void processDriver(const DerivedDriver& driver) { driver.printBase(); driver.printDerived(); } int main() { int baseVal, derivedVal; cin >> baseVal >> derivedVal; DerivedDriver driver(baseVal, derivedVal); // Call processDriver so both configs print processDriver(driver);; return 0; }
Test Cases
Test Results
Input
10 5
Expected Output
Base config 10 Derived config 5