Difficulty: Easy
Correct Answer: A destructor has no return type.
Explanation:
Introduction / Context:
Destructors finalize an object's lifetime and release resources. Their syntax is constrained to ensure predictable cleanup. This question focuses on what a destructor may return.
Given Data / Assumptions:
Concept / Approach:
By the C++ standard, a destructor has no return type and cannot return a value. Writing any return type (e.g., void) is ill-formed because the grammar fixes destructor declarations to the ~ClassName() form only. Control may leave the destructor normally or by throwing an exception (which is strongly discouraged), but there is never a return value.
Step-by-Step Solution:
1) Consider a valid form: struct T { ~T(); };2) Attempt to write void ~T(); → compilation error: return type not permitted.3) Likewise, int ~T(); is invalid for the same reason.4) Therefore the only correct statement is that a destructor has no return type.
Verification / Alternative check:
Compile test snippets with various faux return types on destructors; compilers reject them according to the grammar.
Why Other Options Are Wrong:
Void/integer/same as main/boolean: all contradict the fixed grammar for destructors.
Common Pitfalls:
Attempting to signal cleanup errors via a destructor return value. Use exception-safe design (prefer noexcept destructors) and RAII so failure paths are explicit outside destructors.
Final Answer:
A destructor has no return type.
Discussion & Comments