Bird
Raised Fist0
C++programming~20 mins

Access specifiers in C++ - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
πŸŽ–οΈ
Access Specifiers Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of accessing private member in derived class
What is the output of this C++ code?
C++
#include <iostream>
using namespace std;

class Base {
private:
    int x = 10;
public:
    int getX() { return x; }
};

class Derived : public Base {
public:
    void printX() {
        // cout << x << endl; // line A
        cout << getX() << endl;
    }
};

int main() {
    Derived d;
    d.printX();
    return 0;
}
A0
BCompilation error due to accessing private member x
C10
DRuntime error
Attempts:
2 left
πŸ’‘ Hint
Private members are not accessible directly in derived classes, but public methods can access them.
❓ Predict Output
intermediate
2:00remaining
Output of protected member access in derived class
What will this program print?
C++
#include <iostream>
using namespace std;

class Parent {
protected:
    int val = 5;
};

class Child : public Parent {
public:
    void show() {
        cout << val << endl;
    }
};

int main() {
    Child c;
    c.show();
    return 0;
}
ACompilation error: val is inaccessible
B5
C0
DRuntime error
Attempts:
2 left
πŸ’‘ Hint
Protected members are accessible in derived classes.
❓ Predict Output
advanced
2:00remaining
Accessing private member from outside class
What error does this code produce?
C++
#include <iostream>
using namespace std;

class Sample {
private:
    int secret = 42;
};

int main() {
    Sample s;
    cout << s.secret << endl;
    return 0;
}
ACompilation error: 'secret' is private within this context
B42
CRuntime error
D0
Attempts:
2 left
πŸ’‘ Hint
Private members cannot be accessed outside their class.
❓ Predict Output
advanced
2:00remaining
Output of mixed access specifiers in inheritance
What is the output of this program?
C++
#include <iostream>
using namespace std;

class A {
public:
    int x = 1;
protected:
    int y = 2;
private:
    int z = 3;
};

class B : public A {
public:
    void print() {
        cout << x << ' ' << y << ' ';
        // cout << z << ' '; // line X
    }
};

int main() {
    B b;
    b.print();
    return 0;
}
ACompilation error due to accessing private member z
B1 2 3
CRuntime error
D1 2
Attempts:
2 left
πŸ’‘ Hint
Private members are not accessible in derived classes.
🧠 Conceptual
expert
2:00remaining
Number of accessible members in derived class
Given the class below, how many members are accessible directly in class Derived?
C++
class Base {
public:
    int a;
protected:
    int b;
private:
    int c;
};

class Derived : public Base {
    void func() {
        // Which members can be accessed here?
    }
};
A2 members: a and b
B3 members: a, b, and c
C1 member: a only
D0 members
Attempts:
2 left
πŸ’‘ Hint
Private members are not accessible in derived classes.

Practice

(1/5)
1. Which access specifier allows members of a class to be accessed from anywhere in the program?
easy
A. protected
B. private
C. public
D. internal

Solution

  1. Step 1: Understand access specifiers

    Public members are accessible from any part of the program, unlike private or protected.
  2. Step 2: Compare with other specifiers

    Private restricts access to inside the class only; protected allows access in derived classes.
  3. Final Answer:

    public -> Option C
  4. Quick Check:

    Access anywhere = public [OK]
Hint: Public means accessible everywhere, private means hidden [OK]
Common Mistakes:
  • Confusing private with public
  • Thinking protected is accessible everywhere
  • Assuming internal is a C++ specifier
2. Which of the following is the correct way to declare a private member variable int age inside a class?
easy
A. private int age;
B. private: int age;
C. int age private;
D. int private age;

Solution

  1. Step 1: Recall C++ syntax for access specifiers

    Access specifiers are labels followed by a colon, then members are declared below.
  2. Step 2: Identify correct syntax

    private: int age; uses 'private:' followed by 'int age;' which is correct syntax.
  3. Final Answer:

    private: int age; -> Option B
  4. Quick Check:

    Access specifier label + colon = correct [OK]
Hint: Access specifiers end with colon, members declared below [OK]
Common Mistakes:
  • Placing access specifier before type
  • Missing colon after access specifier
  • Trying to put access specifier after variable
3. What will be the output of this code?
class Test {
private:
    int x = 5;
public:
    int getX() { return x; }
};

int main() {
    Test t;
    // std::cout << t.x << std::endl; // Line A
    std::cout << t.getX() << std::endl;
    return 0;
}
medium
A. 5
B. Compilation error at Line A
C. 0
D. Runtime error

Solution

  1. Step 1: Understand private member access

    The variable x is private, so direct access like t.x is not allowed (Line A is commented out).
  2. Step 2: Use public getter method

    The method getX() is public and returns x's value, so std::cout << t.getX() prints 5.
  3. Final Answer:

    5 -> Option A
  4. Quick Check:

    Private hidden, public getter shows 5 [OK]
Hint: Private members need public methods to access outside [OK]
Common Mistakes:
  • Trying to access private variable directly
  • Expecting 0 as default value
  • Confusing compilation and runtime errors
4. Identify the error in this code snippet:
class Base {
protected:
    int value = 10;
};

class Derived : public Base {
public:
    void show() {
        std::cout << value << std::endl;
    }
};

int main() {
    Derived d;
    d.show();
    std::cout << d.value << std::endl;
    return 0;
}
medium
A. Error: Cannot access protected member 'value' from main using object
B. Error: Cannot access protected member 'value' inside Derived class
C. Error: Missing semicolon after class Derived
D. No error, code runs and prints 10 twice

Solution

  1. Step 1: Check access to protected member inside Derived

    Derived class can access protected members of Base, so d.show() works and prints 10.
  2. Step 2: Check access to protected member from main

    Main function cannot access protected members directly via object, so std::cout << d.value causes compilation error.
  3. Final Answer:

    Error: Cannot access protected member 'value' from main using object -> Option A
  4. Quick Check:

    Protected accessible in subclass, not outside [OK]
Hint: Protected members hidden outside class and subclasses [OK]
Common Mistakes:
  • Thinking protected is public
  • Assuming main can access protected members
  • Missing error on direct access in main
5. You want to design a class where some data is hidden from everyone except derived classes, and some functions are accessible everywhere. Which access specifiers should you use for data and functions respectively?
hard
A. Data: private, Functions: public
B. Data: protected, Functions: private
C. Data: public, Functions: protected
D. Data: protected, Functions: public

Solution

  1. Step 1: Determine data access for derived classes only

    Protected data is hidden from outside but accessible in derived classes, fitting the requirement.
  2. Step 2: Determine function access for everyone

    Functions accessible everywhere must be public.
  3. Final Answer:

    Data: protected, Functions: public -> Option D
  4. Quick Check:

    Protected data + public functions = correct design [OK]
Hint: Protected hides data, public shares functions [OK]
Common Mistakes:
  • Using private data blocks derived classes
  • Making functions private hides them outside
  • Confusing public and protected roles
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard