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