Ich habe gelesen, dass ein überladener Operator, der als Elementfunktion deklariert ist, asymmetrisch ist, da er nur einen Parameter haben kann und der andere Parameter, der automatisch übergeben wird, der this
Zeiger ist. Es gibt also keinen Standard, um sie zu vergleichen. Auf der anderen Seite, überladener Operator deklarierte als friend
ist symmetrisch , weil wir zwei Argumente des gleichen Typs übergeben , und daher können sie verglichen werden.
Meine Frage ist, warum Freunde bevorzugt werden, wenn ich den Wert eines Zeigers immer noch mit einer Referenz vergleichen kann? (Die Verwendung einer asymmetrischen Version führt zu denselben Ergebnissen wie die symmetrische Version.) Warum verwenden STL-Algorithmen nur symmetrische Versionen?