In C können überladene Operatoren entweder als Friend-Funktionen oder Member-Funktionen implementiert werden. Wenn es um den Stream-Einfügungsoperator „<<“ geht, bestimmen bestimmte Überlegungen die Wahl zwischen diesen Ansätzen.
friend ostream & operator<<(ostream & os, const Paragraph& p) { return os << p.to_str(); }
Dieser Ansatz wird häufig für Streams verwendet Operatoren, weil:
ostream & operator<<(Paragraph const& rhs);
Obwohl es verlockend ist, darüber nachzudenken Da Memberfunktionen für alle Klassenmethoden verwendet werden sollten, wird dieser Ansatz für die Methode „<<“ nicht empfohlen. Operator aus mehreren Gründen:
Betrachten Sie die folgende Klasse:
class Paragraph { std::string m_para; public: Paragraph(std::string const& init) : m_para(init) {} std::string const& to_str() const { return m_para; } };
In diesem Fall wird eine Freundfunktion für die „ <<" Der Operator ist die bevorzugte Wahl, weil:
Das obige ist der detaillierte Inhalt vonFriend-Funktion vs. Member-Funktion für Operatorüberladung: Wann wird eine Friend-Funktion für ` bevorzugt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!