Difficulty: Easy
Correct Answer: destructor
Explanation:
Introduction / Context:
C++ guarantees deterministic cleanup for objects through a special member function that runs at the end of an object's lifetime. Understanding which function this is underpins Resource Acquisition Is Initialization (RAII) and exception safety.
Given Data / Assumptions:
Concept / Approach:
The destructor (~ClassName) executes when the object's lifetime ends. It should release any resources acquired by the object, such as memory, file handles, sockets, or locks. Constructors initialize; destructors finalize. Virtual destructors enable correct cleanup via base-class pointers in polymorphic hierarchies.
Step-by-Step Solution:
1) Create object: Widget w; → constructor runs.2) Scope ends or delete p; is called → destructor ~Widget() runs.3) Inside ~Widget(), free resources and maintain invariants.4) Program proceeds with resources properly released.
Verification / Alternative check:
Add logging to ~Widget(). You will observe a call each time an object is destroyed, including in reverse order for multiple objects in the same scope.
Why Other Options Are Wrong:
constructor: runs at creation time, not destruction.virtual function: generic term; destructors themselves can be virtual.main: program entry point, unrelated to object teardown.assignment operator: handles assignment between existing objects, not end-of-life.
Common Pitfalls:
Forgetting to declare a virtual destructor in a polymorphic base class and deleting derived objects via a base pointer, which leaks resources or produces undefined behavior.
Final Answer:
destructor
Discussion & Comments