ADT stands for abstract data type not only in C++ but in the computer science world. We can define ADT as a class of objects for which logical semantics(behavior) is defined by a set of values and operations.
Barbara Liskov and Stephen N. Zilles proposed ADT for the first time in 1974. ADT is a concept in computer science. ADTs are used in the design and analysis of algorithms, data structures and software systems. In other words ADTs are used to clarify the illustration of abstract algorithms, to arrange and evaluate or assess data structures and to describe the type system of programming languages. Many times they are implemented as modules.
The interface of modules declares the procedure that corresponds to ADT operation. This works as information hiding strategy. By using this strategy we can change the implementation of the module without disturbing the client programs.
Defining abstract data type
Generalized approach of several algebraic structures (such as lattices, groups, and rings) are also regarded as abstract data type.
Now we know that abstract data type is defined as mathematical model, model of data objects that make up a data types and the functions that operate on these objects. To define the abstract data types, we have to use either “imperative” and “functional” definition styles since there are no standard conventions for defining them.
Example of ADT
For example, integers are an ADT, defined as the values ..., −2, −1, 0, 1, 2, ..., and by the operations of addition, subtraction, multiplication, and division, together with greater than, less than, etc., which behave according to familiar mathematics, independently of how the integers are represented by the computer. Explicitly, "behavior" includes obeying various axioms (associativity and commutativity of addition, etc.), and preconditions on operations (cannot divide by zero). Typically integers are represented in a data structure as binary numbers, most often as two's complement, but might be binary coded decimal or in one's' complement, but the user is abstracted from the concrete choice of representation, and can use the data as data types.