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 }
Objects of class types that are not copy restricted can be assigned, passed as arguments to functions, and returned by functions.
Related References
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.