Можно ли перегрузить оператор в Objective-C?

Можно ли переопределить использование оператора в Objective-C?

Например,

myClassInstance + myClassInstance

вызывает пользовательскую функцию для добавления двух.

54
задан Matt Curtis 31 August 2010 в 12:46
поделиться

2 ответа

Перегрузка операторов не является функцией Objective-C. Если два экземпляра ваших классов могут быть добавлены вместе, укажите метод и разрешите их добавление с помощью этого метода:

Thing *result = [thingOne thingByAddingThing:thingTwo];

Или, если ваш класс является изменяемым:

[thingOne addThing:thingTwo];
90
ответ дан 7 November 2019 в 08:02
поделиться

Во-первых, перегрузка операторов — это зло. Во-вторых, C не поддерживает перегрузку операторов, а Objective-C является полноценным надмножеством C, в котором добавлено лишь несколько ключевых слов и синтаксис обмена сообщениями.

При этом, если вы используете среду разработки Apple, вы можете использовать Objective-C++ вместо Objective-C, что дает вам доступ ко всем ошибкам и недостаткам C++, включая перегрузку операторов. Самый простой способ использовать Objective-C++ — просто изменить расширение файлов реализации с «.m» на «.mm»

.
-28
ответ дан 7 November 2019 в 08:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: