Class types are defined using class-specifiers. Class types can be declared using elaborated-type-specifiers as shown in Type Specifiers in Chapter 6.
Syntax
class-specifier :
class-head { member-listopt }
class-head :
class-key imodelopt identifieropt base-specopt
class-key imodelopt class-nameopt base-specopt
class-key :
class
struct
union
imodel :
__declspec
Class names are introduced as identifiers immediately after the compiler processes them (before entry into the class body); they can be used to declare class members. This allows declaration of self-referential data structures, such as the following:
class Tree
{
public:
void *Data;
Tree *Left;
Tree *Right;
};