Partager via


Surcharge de l’opérateur << pour vos propres classes

Les flux de sortie utilisent l’opérateur d’insertion (<<) pour les types standard. Vous pouvez aussi surcharger l’opérateur << pour vos propres classes.

Exemple

L’exemple de fonction write a montré l’utilisation d’une structure Date. Les dates sont une parfaite illustration de classe C++ dans laquelle les membres de données (mois, jour et année) sont masqués. Un flux de sortie est la destination logique pour l’affichage d’une structure de ce type. Ce code affiche une date à l’aide de l’objet cout :

Date dt(1, 2, 92);

cout <<dt;

Pour que cout accepte un objet Date après l’opérateur d’insertion, surchargez l’opérateur d’insertion pour reconnaître un objet ostream à gauche et un objet Date à droite. La fonction d’opérateur << surchargé doit ensuite être déclarée comme ami (friend) de la classe Date pour pouvoir accéder aux données privées dans un objet Date.

// 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;
}
5/6/92

Notes

L’opérateur surchargé retourne une référence à l’objet ostream d’origine, ce qui signifie que vous pouvez combiner des insertions :

cout <<"The date is" <<dt <<flush;

Voir aussi

Flux de sortie