Перегрузка оператора: функция-член или функция-член?

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

Мой вопрос в том, когда Я все еще могу сравнить lvalue указателя со ссылкой, почему предпочтение отдается друзьям? (использование асимметричной версии дает те же результаты, что и симметричная) перегруженный оператор, объявленный как друг , является симметричным , потому что мы передаем два аргумента одного и того же типа и, следовательно, их можно сравнивать.

Мой вопрос в том, когда я все еще могу сравнивать lvalue указателя на ссылку, почему предпочтение отдается друзьям? (использование асимметричной версии дает те же результаты, что и симметричная) перегруженный оператор, объявленный как друг , симметричный , потому что мы передаем два аргумента одного и того же типа и, следовательно, их можно сравнивать.

Мой вопрос в том, когда я все еще могу сравнивать lvalue указателя на ссылку, почему предпочтение отдается друзьям? (использование асимметричной версии дает те же результаты, что и симметричная) Почему алгоритмы STL используют только симметричные версии?

107
задан 眠りネロク 11 October 2018 в 09:41
поделиться