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

174
Перегрузка операторов методами расширения C #

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

170
Как я могу надежно получить адрес объекта, когда оператор & перегружен?

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

155
Что делает перегрузку оператора Scala «хорошей», а «плохой» в C ++?

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

148
Почему компилятор Scala запрещает перегруженные методы с аргументами по умолчанию?

Хотя могут быть допустимые случаи, когда такие перегрузки методов могут стать неоднозначными, почему компилятор запрещает код, который не является неоднозначным ни во время компиляции, ни во время выполнения? Пример: // This fails: def foo(a: String)(b: Int = 42) = a + b def foo(a: Int) (b: Int =...

138
Есть ли причина, по которой && и || перегружены? не закорачивайте?

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

131
Перегрузка метода в Objective-C?

Насколько мне известно, Objective-C не поддерживает перегрузку методов. Что может быть альтернативой этому в Objective-C? Или мне всегда следует использовать другое имя...

130
Перегрузка операторов доступа к членам ->,. *

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

129
Должен ли оператор << быть реализован как друг или как функция-член?

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

127
Почему String.valueOf (null) вызывает исключение NullPointerException?

согласно документации метод String.valueOf(Object obj)возвращает: если аргумент равен null, то строка равна "null"; в противном случае obj.toString()возвращается значение. Но почему, когда я пытаюсь сделать это: System.out.println("String.valueOf(null) = " + String.valueOf(null)); вместо этого...

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

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

117
Почему не вызывается общедоступный константный метод, если неконстантный - частный?

Рассмотрим этот код: struct A { void foo() const { std::cout << "const" << std::endl; } private: void foo() { std::cout << "non - const" << std::endl; } }; int main() { A a; a.foo(); } Ошибка компилятора: ошибка: 'void A :: foo ()' является закрытым '. Но когда я удаляю...

114
Как проверить наличие нулей в перегрузке оператора '==' без бесконечной рекурсии?

Следующее вызовет бесконечную рекурсию в методе перегрузки оператора ==. Foo foo1 = null; Foo foo2 = new Foo(); Assert.IsFalse(foo1 == foo2); public static bool operator ==(Foo foo1, Foo foo2) { if (foo1 == null) return foo2 == null; return foo1.Equals(foo2); } Как проверить наличие...

114
Перегрузка оператора C # для `+ =`?

Я пытаюсь выполнить перегрузку оператора +=, но не могу. Могу сделать только перегрузку оператора для +. Как придешь? редактировать Причина, по которой это не работает, заключается в том, что у меня есть класс Vector (с полями X и Y). Рассмотрим следующий пример. vector1 += vector2; Если моя...

109
Есть ли способ выполнить перегрузку метода в TypeScript?

Есть ли способ выполнить перегрузку метода на языке TypeScript? Я хочу добиться чего-то вроде этого: class TestClass { someMethod(stringParameter: string): void { alert("Variant #1: stringParameter = " + stringParameter); } someMethod(numberParameter: number, stringParameter: string): void {...