Difficulty: Easy
Correct Answer: Any member function of that class.
Explanation:
Introduction / Context:
C++ uses access specifiers to protect a class’s internal representation. Private members form the strictest boundary, and understanding who is allowed to read or modify them is central to encapsulation.
Given Data / Assumptions:
Concept / Approach:
All member functions of a class, regardless of whether they are declared public, protected, or private, have full access to all members of that class, including private ones. This is a class-level privilege, not per-function. Additionally, friends (functions or classes) explicitly declared as such also gain access, but the question asks for the general rule applicable to class members themselves.
Step-by-Step Solution:
1) Inside class C, any member function can read/write C’s private data.2) Public/protected/private qualifiers control who can call the member, not its internal access rights.3) External non-friend functions cannot access private members.4) Therefore, “Any member function of that class” is the most accurate rule.
Verification / Alternative check:
Write two member functions—one public and one private—and access the same private field from both; compilation succeeds. Try the same access from a non-friend free function; compilation fails.
Why Other Options Are Wrong:
A/B: Overbroad—privacy would be meaningless if any/global functions could access internals.D: Misleading—private members are accessible from all members, not only public ones.E: Incomplete—friends can access, but the statement omits the class’s own members.
Common Pitfalls:
Confusing “who can call a member function” with “what that member function can access.” The former is controlled by the member’s own access specifier; the latter is uniformly full access within the class.
Final Answer:
Any member function of that class.
Discussion & Comments