Difficulty: Easy
Correct Answer: The program will report compile time error.
Explanation:
Introduction / Context:
This question checks your understanding of C++ static member functions and the absence of the implicit this
pointer inside them. It asks whether referencing this->x
in a static method is legal.
Given Data / Assumptions:
x
is a static data member.SetData
and Display
are static.SetData
incorrectly uses this->x
.
Concept / Approach:
A static member function is not associated with any particular object instance, so it has no this
pointer. Any attempt to use this
inside a static member function is ill-formed and rejected by the compiler.
Step-by-Step Solution:
Note the signature static void SetData
indicates no object context.Inside it, this
is referenced, which is invalid.The compiler issues an error; execution never occurs.
Verification / Alternative check:
Replace this->x
with CuriousTab::x
(qualified name) or simply x
and the code will compile and print 22.
Why Other Options Are Wrong:
They assume successful compilation or run-time behavior. The error arises at compile time.
Common Pitfalls:
Confusing static context with instance context and trying to use this
where it does not exist.
Final Answer:
The program will report compile time error.
Discussion & Comments