En C, les opérateurs surchargés peuvent être implémentés soit en tant que fonctions amies, soit en tant que fonctions membres. En ce qui concerne l'opérateur d'insertion de flux "<<", certaines considérations guident le choix entre ces approches.
friend ostream & operator<<(ostream & os, const Paragraph& p) { return os << p.to_str(); }
Cette approche est couramment utilisée pour les flux opérateurs car :
ostream & operator<<(Paragraph const& rhs);
Bien qu'il soit tentant de penser que les fonctions membres doivent être utilisées pour toutes les méthodes de classe, cette approche n'est pas recommandée pour le "<<" opérateur pour plusieurs raisons :
Considérons la classe suivante :
class Paragraph { std::string m_para; public: Paragraph(std::string const& init) : m_para(init) {} std::string const& to_str() const { return m_para; } };
Dans ce cas, utiliser une fonction ami pour le " ≪≪" L'opérateur est le choix préféré car :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!