The following example defines a string class:
#include <stdlib.h>
#include <iostream.h>
class string {
private:
char* data;
size_t size;
public:
// (functions not relevant here)
friend ostream& operator<<(ostream&, const string&);
friend istream& operator>>(istream&, string&);
};
|
The insertion and extraction operators must in this case be defined as friends because the data part of the string class is private.
ostream& operator<< (ostream& ostr, const string& output)
{ return ostr << output.data;}
|
Here is the definition of operator<< overloaded for use with strings.
cout << string1 << string2; |
operator<< takes ostream& (that is, a reference to an ostream) as its first argument and returns the same ostream, making it possible to combine insertions in one statement.