2012-09-10 50 views

回答

0

那麼它取決於你希望你的重載消息傳遞做什麼。

目標C中的消息傳遞是動態的,您可以在多個級別將消息傳入系統中插入代碼。最簡單的是Message Forwarding。除此之外,Dynamic Method Resolution和使用class_replaceMethod()runtime

Objective-C屬性的點運算符是消息傳遞的捷徑。它就像消息傳遞一樣,調用-prop-setProp:獲取和設置屬性。

C結構的點運算符不可重載。

1

運算符重載只是C++的一個特性,而不是Objective-C的特性。看看問題: Can I overload an operator in Objective-C?

從我對C++的知識(不知道它在Objective-C++中完全支持),你可以重載[]運算符而不是。您可以閱讀here

編輯(輸入JefferyThomas ty後):Objective-C++不支持重載消息傳遞運算符。我給出的答案是正確的,但不適用該運營商(僅限於數組下標或其他C的「功能」 ++)

+0

user1107412想要重載消息傳遞,而不是數組下標。 –

+0

@JefferyThomas確實有什麼不同,運營商的實際目的是什麼? (我不這麼認爲,如果我錯了,請糾正我的錯誤!) –

+1

C++不能支持'[instance method:parameter]'重載。它不是C++語法的一部分。您可以這樣想,您需要'id操作符[](id實例,SEL方法,...)''的方法簽名。它只是不存在於C++中。 –

0

超載的C++標操作,

class MyClass { 
private: 
    int myList[10]; 
public: 
    int& operator [] (const int index) {return myList[index];} // Check for index out of bounds if necessary. 
}; 

這是怎麼回事,通常看起來。的int &是返回的參考,所以你可以寫

MyClass a; 
a[1] = 3; 

沒有INT &,你只能訪問,而不是對其進行修改。閱讀更多here

您不能在Objective-C中重載運算符。 關於你的重載的問題,只有一個數字,你可以重載運營商,這是「」:

+ - * / = < > += -= *= /= << >> 
<<= >>= == != <= >= ++ -- % & ^ ! | 
~ &= ^= |= && || %= [] () , ->* -> new 
delete new[]  delete[]