+1 за различие между функциями-членами и функциями, не являющимися членами, а не функциями-членами и друзьями. Думаю, сегодня мы бы сказали «глобальная область или область имен».
читал, что перегруженный оператор объявлен как функция-членасимметричный потому что он может иметь только один параметр, а другой параметр, передаваемый автоматически, являетсяthis
указатель. Таким образом, не существует стандарта для их сравнения. С другой стороны, перегруженный оператор объявлен какfriend
являетсясимметричный потому что мы передаем два аргумента одного типа и, следовательно, их можно сравнить.
Мой вопрос заключается в том, что, когда я все еще могу сравнить значение l указателя со ссылкой, почему друзья предпочитают? (использование асимметричной версии дает те же результаты, что и симметричные). Почему алгоритмы STL используют только симметричные версии?