Difficulty: Easy
Correct Answer: A reference must always be initialized.
Explanation:
Introduction / Context:
References in C++ are aliases to existing objects. Unlike pointers, a reference must be bound to an object at the point of its declaration. This question focuses on the unconditional requirement for reference initialization.
Given Data / Assumptions:
Concept / Approach:
The language requires that a reference be initialized as part of its declaration. This is independent of whether the reference appears in a function body, as a global/static, or as a class data member (members can be initialized in constructors’ initializer lists). There is no 'null reference' by default and no way to leave a reference unbound.
Step-by-Step Solution:
1) Evaluate scope-based claims (inside vs outside functions): these do not change the rule.2) Recognize the universal constraint: binding must occur at declaration.3) The only answer that reflects this universal constraint is 'A reference must always be initialized.'4) Therefore select option C.
Verification / Alternative check:
Attempt to compile 'int &r;' without an initializer. The compiler will emit an error requiring initialization. For class members, use constructor initializer lists: 'MyType(int &x) : ref(x) {}'.
Why Other Options Are Wrong:
'Inside functions' or 'outside all functions': scope is irrelevant to the rule.'Both A and C': A is not universally true; the correct universal rule is C alone.
Common Pitfalls:
Confusing references with pointers and expecting to assign a target later. Rebinding is not allowed; if reseating is needed, use pointers or std::reference_wrapper for certain patterns.
Final Answer:
A reference must always be initialized.
Discussion & Comments