Вопросы с тегом «operator-overloading»

Перегрузка операторов - это функция языка программирования, которая позволяет настраивать реализации операторов в зависимости от типов задействованных операндов. Некоторые языки позволяют определять новые операторы, в то время как другие позволяют только переопределение существующих.

7
Каковы основные правила и идиомы для перегрузки операторов?
Примечание. Ответы были даны в определенном порядке , но поскольку многие пользователи сортируют ответы по голосам, а не по времени, в которое они были даны, вот индекс ответов в том порядке, в котором они имеют наибольшее значение: Общий синтаксис перегрузки операторов в C ++ Три основных правила перегрузки операторов в …

16
Почему Java не предлагает перегрузку операторов?
Переходя от C ++ к Java, очевидный вопрос без ответа состоит в том, почему Java не включает перегрузку операторов? Не Complex a, b, c; a = b + c;намного ли проще, чем Complex a, b, c; a = b.add(c);? Есть известная причина этого веские аргументы для не позволяя перегружать оператор? …

10
Контейнеры Pretty-print C ++ STL
Пожалуйста, обратите внимание на обновления в конце этого поста. Обновление: я создал публичный проект на GitHub для этой библиотеки! Я хотел бы иметь один шаблон, который раз и навсегда позаботится о красивой печати через все контейнеры STL operator<<. В псевдокоде я ищу что-то вроде этого: template<container C, class T, String …

15
Являются ли == и! = Взаимозависимыми?
Я учусь о перегрузках операторов в C ++, и я вижу , что ==и !=просто некоторые специальные функции , которые могут быть настроены для определенного пользователя типов. Однако меня беспокоит, почему нужны два отдельных определения? Я думал, что если a == bэто правда, то a != bавтоматически ложно, и наоборот, …

8
Как перегрузить оператор квадратной скобки в C #?
DataGridView, например, позволяет вам сделать это: DataGridView dgv = ...; DataGridViewCell cell = dgv[1,5]; но я не могу найти документацию по оператору index / квадратные скобки. Как они это называют? Где это реализовано? Это может бросить? Как я могу сделать то же самое в моих собственных классах? ETA: Спасибо за …

5
Как правильно перегрузить оператор << для ostream?
Я пишу небольшую матричную библиотеку на C ++ для матричных операций. Однако мой компилятор жалуется, где раньше этого не было. Этот код оставлялся на полке в течение 6 месяцев, и между тем я обновил свой компьютер с debian etch до lenny (g ++ (Debian 4.3.2-1.1) 4.3.2), однако у меня та …




6
Перегрузка операторов методами расширения C #
Я пытаюсь использовать методы расширения для добавления перегрузки оператора в StringBuilderкласс C # . В частности, учитывая StringBuilder sb, я хотел бы sb += "text"стать эквивалентным sb.Append("text"). Вот синтаксис для создания метода расширения для StringBuilder: public static class sbExtensions { public static StringBuilder blah(this StringBuilder sb) { return sb; } …

5
Как я могу надежно получить адрес объекта, когда оператор & перегружен?
Рассмотрим следующую программу: struct ghost { // ghosts like to pretend that they don't exist ghost* operator&amp;() const volatile { return 0; } }; int main() { ghost clyde; ghost* clydes_address = &amp;clyde; // darn; that's not clyde's address :'( } Как я могу получить clydeадрес? Я ищу решение, которое …

14
Что делает перегрузку оператора Scala «хорошей», а «плохой» в C ++?
Многие считают, что перегрузка операторов в C ++ является «плохой вещью» (tm), и это ошибка, которую нельзя повторять на более новых языках. Конечно, это была одна особенность, специально упущенная при разработке Java. Теперь, когда я начал читать Scala, я обнаружил, что он имеет то, что очень похоже на перегрузку операторов …

9
Есть ли причина, по которой && и || перегружены? не закорачивайте?
Короткое замыкание поведение операторов &amp;&amp;и ||удивительный инструмент для программистов. Но почему они теряют это поведение при перегрузке? Я понимаю, что операторы - это просто синтаксический сахар для функций, но операторы для boolимеют такое поведение, почему оно должно быть ограничено этим единственным типом? Есть ли за этим какие-то технические доводы?

5
Перегрузка операторов доступа к членам ->,. *
Я понимаю , большинство перегрузки операторов, за исключением операторов доступа члена -&gt;, .*, и -&gt;*т.д. В частности, что передается этим операторным функциям, а что нужно возвращать? Как операторная функция (например operator-&gt;(...)) узнает, на какой член ссылается? Это может знать? Это вообще нужно знать? Наконец, нужно ли учитывать какие-либо константы? Например, …

8
Должен ли оператор << быть реализован как друг или как функция-член?
Это в основном вопрос, есть ли «правильный» способ реализации operator&lt;&lt;? Читая это, я вижу что-то вроде: friend bool operator&lt;&lt;(obj const&amp; lhs, obj const&amp; rhs); предпочтительнее чем-то вроде ostream&amp; operator&lt;&lt;(obj const&amp; rhs); Но я не совсем понимаю, почему я должен использовать тот или другой. Мой личный случай: friend ostream &amp; operator&lt;&lt;(ostream …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.