A class definition starts with the
struct , or
union keyword. The difference between a
class and a
struct is the default access level. (See Section 6.5 later in this chapter
for details.) A
union is like a
struct for which the storage of all
the data members overlap, so you can use only one data member at a time.
(See Section 6.1.3 later
in this section for details.)
A class definition can list any number of base classes, some or all of which might be virtual. (See Section 6.4 later in this chapter for information about base classes and virtual base classes.)
In the class definition are declarations for data members (called instance variables or fields in some other languages), member functions (sometimes called methods), and nested types.
A class definition defines a scope, and the class members are declared in the class scope. The class name itself is added to the class scope, so a class cannot have any members, nested types, or enumerators that have the same name as the class. As with any other declaration, the class name is also added to the scope in which the class is declared.
You can declare a name as a
union without providing its full definition. This incomplete class declaration lets you use the class name in pointers and references but not in any context in which the full definition is needed. You need a complete class definition when declaring a nonpointer or nonreference object, when using members of the class, and so on. An ...