Using class objects (C++ only)
You can use a class type to create instances or objects of
that class type. For example, you can declare a class, structure,
and union with class names
X, Y,
and Z respectively: class X {
// members of class X
};
struct Y {
// members of struct Y
};
union Z {
// members of union Z
};You can then declare objects of each of these class types.
Remember that classes, structures, and unions are all types of C++
classes.
int main()
{
X xobj; // declare a class object of class type X
Y yobj; // declare a struct object of class type Y
Z zobj; // declare a union object of class type Z
} In C++, unlike C, you do not need to precede declarations
of class objects with the keywords
union, struct,
and class unless the name of the class is hidden.
For example: struct Y { /* ... */ };
class X { /* ... */ };
int main ()
{
int X; // hides the class name X
Y yobj; // valid
X xobj; // error, class name X is hidden
class X xobj; // valid
}When you declare more than one class object in a declaration,
the declarators are treated as if declared individually. For example,
if you declare two objects of class
S in a single
declaration: class S { /* ... */ };
int main()
{
S S,T; // declare two objects of class type S
}this declaration is equivalent to:
class S { /* ... */ };
int main()
{
S S;
class S T; // keyword class is required
// since variable S hides class type S
}but is not equivalent to:
class S { /* ... */ };
int main()
{
S S;
S T; // error, S class type is hidden
}You can also declare references to classes, pointers
to classes, and arrays of classes. For example:
class X { /* ... */ };
struct Y { /* ... */ };
union Z { /* ... */ };
int main()
{
X xobj;
X &xref = xobj; // reference to class object of type X
Y *yptr; // pointer to struct object of type Y
Z zarray[10]; // array of 10 union objects of type Z
}You can initialize classes in external, static, and automatic
definitions. The initializer contains an = (equal
sign) followed by a brace-enclosed, comma-separated list of values.
You do not need to initialize all members of a class.
Objects of class types that are not copy restricted can be assigned, passed as arguments to functions, and returned by functions.