struct
of C (about the same applies to class
in C++).
First of all, a struct
definition in C is static. In other words,
a program cannot add or delete data members of a struct
at run
time. Second, the type of data for each data member is also fixed at
compile time.
The restrictions of a struct
in C are there for good reasons:
efficiency and ease of compiler implementation. struct
is
a huge step forward from what programmers have to do in
assembly language programming. In other words, struct
restrictions
are, for the most part, justifiable and reasonable.
As an abstract data type, however, struct
has too many
implementation-based restrictions. This section explores the interface of
a record ADT, and also how it may be implemented.
For those who are curious about alternative implementations of records, Perl has an interesting perspective of records. Instead of making records a compile-time construct, a record in Perl is a ``hash''. A ``hash'' is similar to a ``map'' as defined in the C++ STL (standard template library), only that a ``hash'' is even more flexible.