A class declaration creates a unique type class name .
A class specifier is used to declare a class. Once a
class specifier has been seen and its members declared, a class
is considered to be defined even if the member functions of that
class are not yet defined . A class specifier has the following
form:
>>----class-----class_name-------------------{-------------------}-->< |-struct-| \-:base_class-/ \-member_list-/ \-union--/
The member_list is optional. It specifies the class members, both data and functions, of the class class_ name. If the member_list of a class is empty, objects of that class have a nonzero size. You can use a class_name within the member _list of the class specifier itself as long as the size of the class is not required. For more information, see Class Member Lists.
The base_class is optional. It specifies the base class or classes from which the class class_name inherits members. If the base_class is not empty, the class class_name is called a derived class.
The declarator for a class variable declared with the class, struct, or union keyword is an identifier. If the symbol * precedes the identifier, the identifier names a pointer to a class of the specified data type. If ** precedes the identifier, the identifier names a pointer to a pointer to a class of the specified data type.
If a constant expression enclosed in [ ] (brackets) follows the identifier, the identifier names an array of classes of the specified data type. If * precedes the identifier and a constant expression enclosed in [ ] follows the identifier, the identifier names an array of pointers to classes of the specified data type.