Difficulty: Easy
Correct Answer: Making at least one member function as pure virtual function.
Explanation:
Introduction:
Abstract classes model shared interfaces/behaviors that derived classes must implement. This question asks which exact C++ mechanism enforces that a class cannot be directly instantiated.
Given Data / Assumptions:
Concept / Approach:
A class becomes abstract if it declares (and does not override with a definition) at least one pure virtual function, written with ”= 0“. This communicates that derived classes must supply an override before they become concrete. Merely having virtual functions is not sufficient; they can still have definitions and the class remains instantiable if no pure virtuals exist.
Step-by-Step Solution:
1) Identify a function that must be implemented by derived types (e.g., draw()).2) Declare it pure virtual in the base: virtual void draw() = 0;3) Because at least one pure virtual exists, the base class becomes abstract.4) Any concrete derived class must implement draw() to be instantiable.
Verification / Alternative check:
Attempting ”Base b;“ where Base has a pure virtual function triggers a compile-time error stating that the type is abstract.
Why Other Options Are Wrong:
static: unrelated to abstractness; affects storage/linkage.virtual keyword alone: enables dynamic dispatch but does not force abstractness.“virtual function” (non-pure): class can still be instantiated.
Common Pitfalls:
Forgetting to provide a virtual destructor in abstract bases used polymorphically. Declaring a pure virtual destructor still requires a definition.
Final Answer:
Making at least one member function as pure virtual function.
Discussion & Comments