C++ allows programmers to specify how operators work with objects of new class types--a concept known as operator overloading. One example of an overloaded operator built into C++ is <<, which is used both as the stream insertion operator and as the bitwise left-shift operator. Similarly, >> is used as both the stream extraction operator and as the bitwise right-shift operator.
This tutorial discusses an Array class that overloads several operators. Our Array class provides enhanced functionality over traditional C++ arrays, such as assigning and comparing Array objects, and checking array indices to ensure that we do not access elements outside the bounds of the underlying C++ array. In addition, this tutorial introduces a copy constructor for initializing a new Array object with the contents of an existing Array object. This tutorial is intended for students and professionals who are familiar with basic array, pointer and class concepts in C++.
[Note: This tutorial is an excerpt (Section 11.8) of Chapter 11, Operator Overloading, from our textbook C++ How to Program, 5/e. These tutorials may refer to other chapters or sections of the book that are not included here. Permission Information: Deitel, Harvey M. and Paul J., C++ HOW TO PROGRAM, ©2005, pp.582-593. Electronically reproduced by permission of Pearson Education, Inc., Upper Saddle River, New Jersey.]
11.8 Case Study:
Array Class (Continued).
The program begins by instantiating two objects of class
integers1 (Fig. 11.8, line 12) with seven elements, and
integers2 (Fig. 11.8, line 13) with the default
Array size—10 elements (specified by the
Array default constructor’s prototype in Fig. 11.6, line 15). Lines 16–18 use member function
getSize to determine the size of
integers1 and output
integers1, using the
Array overloaded stream insertion operator. The sample output confirms that the
Array elements were set correctly to zeros by the constructor. Next, lines 21–23 output the size of
Array integers2 and output
integers2, using the
Array overloaded stream insertion operator.
Using the Overloaded Stream Insertion Operator to Fill an
Line 26 prompts the user to input 17 integers. Line 27 uses the
Array overloaded stream extraction operator to read these values into both arrays. The first seven values are stored in
integers1 and the remaining 10 values are stored in
integers2. Lines 29–31 output the two arrays with the overloaded
Array stream insertion operator to confirm that the input was performed correctly.
Using the Overloaded Inequality Operator
Line 36 tests the overloaded inequality operator by evaluating the condition
integers1 != integers2
The program output shows that the
Arrays indeed are not equal.