In computer science, a composite data type or compound data type is any data type which can be constructed in a program using the programming language's primitive data types and other composite types. It is sometimes called a structure or aggregate data type, although the latter term may also refer to arrays, lists, etc. The act of constructing a composite type is known as composition.
A struct
is C's and C++'s notion of a composite type, a datatype that composes a fixed set of labeled fields or members. It is so called because of the struct
keyword used in declaring them, which is short for structure or, more precisely, user-defined data structure.
In C++, the only difference between a struct
and a class is the default access level, which is private for classes and public for struct
s.
Note that while classes and the class
keyword were completely new in C++, the C programming language already had a crude type of struct
s. For all intents and purposes, C++ struct
s form a superset of C struct
s: virtually all valid C struct
s are valid C++ struct
s with the same semantics.
A struct
declaration consists of a list of fields, each of which can have any type. The total storage required for a struct
object is the sum of the storage requirements of all the fields, plus any internal padding.
For example:
defines a type, referred to as struct Account
. To create a new variable of this type, we can write struct Account myAccount;
which has an integer component, accessed by myAccount.account_number
, and a floating-point component, accessed by myAccount.balance
, as well as the first_name
and last_name
components. The structure myAccount
contains all four values, and all four fields may be changed independently.