Είσοδος και έξοδος με τελεστές

Με καθορισμό μεθόδων για τους τελεστές << και >> μπορούμε να ορίσουμε τον τρόπο που θα γίνεται η είσοδος και έξοδος για κλάσεις που ορίζουμε εμείς. Το παρακάτω παράδειγμα ορίζει μια κλάση date και τον τρόπο που αντικείμενα της κλάσης αυτής θα εμφανίζονται στην οθόνη (ο ορισμός με τη χρήση friend επιτρέπει στη συνάρτηση operator << να έχει ως πρώτο ορίσμα μεταβλητή τύπου ostream).
#include <iostream.h>

class date {
private:
        int month;
        int day;
        int year;
public:
        date(int d, int m, int y);
        friend ostream& operator<< (ostream& os, date& dt);
};

// Constructor
date::date(int d, int m, int y)
{
        day = d;
        month = m;
        year = y;
}

// Overload << to define output
ostream& operator<< ( ostream& os, date& dt )
{
        os << dt.day << '-' << dt.month << '-' << dt.year;
        return os;
}

int
main()
{
        date dt(2362000);           // Create a new date
        cout << dt;                     // Output the date
        return 0;
}