Difficulty: Easy
Correct Answer: Class
Explanation:
Introduction:
An abstract data type is defined by its interface and observable behavior rather than its implementation details. This question asks which choice best captures that idea within C++ terminology.
Given Data / Assumptions:
Concept / Approach:
A class is the canonical vehicle for ADTs in C++. It packages data and functions, controls access via public/protected/private, and allows clients to depend on a stable interface while the implementation can change. Primitive types like int and double are concrete machine-level types, not ADTs. The identifier string typically refers to std::string, which is a class implementing an ADT, but the general answer that represents the concept itself is “Class.”
Step-by-Step Solution:
1) Identify ADT properties: interface-first, hidden representation.2) Map these to C++ constructs: classes provide exactly this encapsulation.3) Recognize primitives as non-ADT concrete types.4) Select “Class” as the best conceptual match.
Verification / Alternative check:
Consider a Stack class: push/pop/top define behavior; internal container choice (vector/list) can change without affecting users—hallmark of an ADT.
Why Other Options Are Wrong:
int / double: primitive numeric types, not interface-defined abstractions.string: specific library class; while it is an ADT instance, the general concept is better represented by “Class”.
Common Pitfalls:
Equating ADT solely with inheritance; ADTs can exist without inheritance so long as the interface abstracts representation.
Final Answer:
Class
Discussion & Comments