Surcharger l'opérateur de << pour vos propres classes
Les flux de sortie utilisent l'opérateur d'insertion (d'<<) pour les types standard.Vous pouvez aussi surcharger l'opérateur d' << pour vos propres classes.
Exemple
l'exemple de fonction d' write a montré l'utilisation d'une structure d' Date .Une date est candidate idéal pour une classe C++ dans lequel les données membres (mois, jour, et année) sont masquées.un flux de sortie est la destination logique pour afficher une telle structure.Ce code affiche une date à l'aide de l'objet d' cout :
Date dt( 1, 2, 92 );
cout << dt;
Pour obtenir cout pour recevoir un objet d' Date après l'opérateur d'insertion, surchargez l'opérateur d'insertion pour identifier un objet d' ostream sur la gauche et un Date sur la droite.La fonction surchargée d'opérateur d' << doit ensuite être déclarée comme un assembly friend de classe Date ce qui peut accéder aux données privées dans un objet d' 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;
}
Notes
L'opérateur surchargé retourne une référence à l'objet d'origine d' ostream , ce qui signifie que vous pouvez combiner des insertions :
cout << "The date is" << dt << flush;