Difficulty: Easy
Correct Answer: int ShowData(void) const { / statements / }
Explanation:
Introduction:
A const member function promises not to modify the observable state of the object. This question checks whether you can place the const in the correct syntactic position for a member function declaration.
Given Data / Assumptions:
Concept / Approach:
The const that makes a member function a “const member function” appears after the parameter list: int ShowData() const. Writing const before the return type (const int) only makes the return value const-qualified; it does not make the member function itself a const member function.
Step-by-Step Solution:
1) Identify we need to qualify the implicit object parameter, not the return.2) Place const after the function signature: int ShowData() const.3) Inside such a function, only other const members can be called unless explicitly cast, and data members cannot be modified (except those marked mutable).4) Therefore option C is correct.
Verification / Alternative check:
Attempt to modify a data member inside a const member function and observe a compile error. Repeat in a non-const function and it compiles.
Why Other Options Are Wrong:
A and B: qualify the return type (const int), not the member function's object parameter.D: cannot be correct because A and B do not declare a const member function.
Common Pitfalls:
Placing const in the wrong location and believing it affects mutability of the object. Remember: for member functions, const follows the parameter list.
Final Answer:
int ShowData(void) const { / statements */ }
Discussion & Comments