Access Specifier Enforcement

#include <iostream>
using namespace std;

// Base driver class
class BaseDriver {
private:
    int privateValue;

protected:
    int protectedValue;

public:
    int publicValue;

    BaseDriver(int val1, int val2, int val3)
        : privateValue(val1), protectedValue(val2), publicValue(val3) {
    }

    void function1(){
        cout << "function1 privateValue = " << privateValue << endl;
        cout << "function1 protectedValue = " << protectedValue << endl;
        cout << "function1 publicValue = " << publicValue << endl;
    }
};

// Derived driver class
class DerivedDriver : public BaseDriver {
public:
    DerivedDriver(int val1, int val2, int val3)
        : BaseDriver(val1, val2, val3) {
    }

    void function2(){
        //cout << "function2 privateValue = " << privateValue << endl;
        cout << "function2 protectedValue = " << protectedValue << endl;
        cout << "function2 publicValue = " << publicValue << endl;
    }
};

int main() {
    int val1, val2, val3;
    cin >> val1 >> val2 >> val3;

    DerivedDriver driver(val1, val2, val3);
    driver.function1();
    driver.function2();

    //cout << "main() privateValue = " << driver.privateValue << endl;
    //cout << "main() protectedValue = " << driver.protectedValue << endl;
    cout << "main() publicValue = " << driver.publicValue << endl;

    return 0;
}

Solving Approach

 

 

 

 

 

 

Upvote
Downvote
Loading...

Input

1 2 3

Expected Output

function1 privateValue = 1 function1 protectedValue = 2 function1 publicValue = 3 function2 protectedValue = 2 function2 publicValue = 3 main() publicValue = 3