Output streams use the insertion (<<) operator for standard types. You can also overload the << operator for your own classes.
Example
The write function example showed the use of a Date structure. A date is an ideal candidate for a C++ class in which the data members (month, day, and year) are hidden from view. An output stream is the logical destination for displaying such a structure. This code displays a date using the cout object:
| Copy Code |
Date dt( 1, 2, 92 ); cout << dt; |
To get cout to accept a Date object after the insertion operator, overload the insertion operator to recognize an ostream object on the left and a Date on the right. The overloaded << operator function must then be declared as a friend of class Date so it can access the private data within a Date object.
| Copy Code |
// overload_date.cpp // compile with: /EHsc #include <iostream> using namespace std; class Date { int mo, da, yr; public: Date(int m, int d, int y) { mo = m; da = d; yr = y; } friend ostream& operator<<(ostream& os, const Date& dt); }; ostream& operator<<(ostream& os, const Date& dt) { os << dt.mo << '/' << dt.da << '/' << dt.yr; return os; } int main() { Date dt(5, 6, 92); cout << dt; } |
Output
|
5/6/92 |
Remarks
The overloaded operator returns a reference to the original ostream object, which means you can combine insertions:
| Copy Code |
cout << "The date is" << dt << flush; |
No comments:
Post a Comment