Which statement about C++ constructors is incorrect? Evaluate the claims about compiler-provided constructors and required access level.

Difficulty: Easy

Correct Answer: Both B and C.

Explanation:


Introduction / Context:
Developers often rely on defaults, but C++ only supplies certain constructors when specific conditions are met. Access control on constructors is also flexible. This question identifies the incorrect statements among common myths.



Given Data / Assumptions:

  • Classes may define their own constructors.
  • If no constructors are user-declared, the compiler may implicitly declare a default constructor.
  • Constructors can have any access specifier: public, protected, or private.



Concept / Approach:
Statement A is true: a constructor is indeed a special member function. Statement B is false because the compiler does not “always” provide a zero-argument constructor; it does so only when none is user-declared and other rules allow it. Statement C is false because constructors may be private or protected (e.g., singletons, factory patterns, or abstract bases). Therefore, the combined incorrect choice is “Both B and C.”



Step-by-Step Solution:
1) Verify A: constructors are members (though unnamed and special).2) Evaluate B: suppressed if any constructor is user-declared; also constrained by class content.3) Evaluate C: access may be restricted intentionally.4) Conclusion: B and C are the incorrect claims.



Verification / Alternative check:
Create a class with a user-declared constructor taking arguments only; observe that default construction is no longer available unless explicitly declared.



Why Other Options Are Wrong:
A is correct; E is false because B and C are indeed incorrect.



Common Pitfalls:
Assuming default construction exists after adding any non-default constructor; you must explicitly add a default constructor if needed.



Final Answer:
Both B and C.


Discussion & Comments

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