Возможный дубликат:
Могу ли я перегрузить оператор в Objective-C?
Можно ли в target-C ++ перегрузить оператор передачи сообщений, то есть []? Возможно ли то же самое с «.»?
Ну, это зависит от того, что вы хотите, чтобы ваше перегруженное сообщение передавало.
Передача сообщений в Objective C является динамической, и вы можете вставить код в систему передачи сообщений на нескольких уровнях. Самый простой Пересылка сообщений. Помимо этого, есть Разрешение динамического метода и используя class_replaceMethod()
от время выполнения.
Точечный оператор для свойств Objective C является сокращением для передачи сообщений. Он работает так же, как при передаче сообщений -prop
а также -setProp:
для получения и установки собственности.
Точечный оператор для структур C не перегружен.
Перегрузка операторов только в C ++, а не в Objective-C. Посмотрите на вопрос:
Могу ли я перегрузить оператор в Objective-C?
Насколько я знаю C ++ (не знаю, полностью ли он поддерживается в Objective-C ++), вы можете перегрузить оператор [], но не оператор. Оператор, как вы можете прочитать Вот.
редактировать (после ввода JefferyThomas ty): Objective-C ++ не поддерживает перегрузку оператора передачи сообщений. Ответ, который я дал, является правильным, но он не применяет этот оператор (только для подписки на массив или других «особенностей» c ++)
Для перегрузки оператора индекса C ++,
class MyClass {
private:
int myList[10];
public:
int& operator [] (const int index) {return myList[index];} // Check for index out of bounds if necessary.
};
Вот как это обычно выглядит. Инт& для возврата ссылки, так что вы можете написать
MyClass a;
a[1] = 3;
Без инт&, вы можете только получить доступ, а не изменять его. Прочитайте больше Вот.
Вы не можете перегружать операторы в Objective-C.
Что касается вашего вопроса о перегрузке «.», Есть только несколько операторов, которые вы можете перегрузить, а именно:
+ - * / = < > += -= *= /= << >>
<<= >>= == != <= >= ++ -- % & ^ ! |
~ &= ^= |= && || %= [] () , ->* -> new
delete new[] delete[]