Which is the correct way to declare a constant (const-qualified) member function in C++? Assume the intention is to prevent modification of the object's state.

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:

  • We are declaring a non-static member function.
  • We want the implicit object parameter (this) to be treated as pointer-to-const.
  • Return type is an int in the example.


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

No comments yet. Be the first to comment!
Join Discussion