重複の可能性:
Objective-Cで演算子をオーバーロードできますか?
で、objective-C ++では、メッセージパッシング演算子、つまり[]をオーバーロードすることは可能ですか?「。」と同じことは可能ですか?
重複の可能性:
Objective-Cで演算子をオーバーロードできますか?
で、objective-C ++では、メッセージパッシング演算子、つまり[]をオーバーロードすることは可能ですか?「。」と同じことは可能ですか?
Objective-Cではなく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.
};
これが通常の外観です。int&は参照を返すためのものなので、次のように記述できます。
MyClass a;
a[1] = 3;
int&がないと、アクセスのみが可能であり、変更はできません。詳細はこちらをご覧ください。
Objective-Cでは演算子をオーバーロードすることはできません。「。」のオーバーロードに関する質問に関しては、オーバーロードできる演算子の数は次のとおりです。
+ - * / = < > += -= *= /= << >>
<<= >>= == != <= >= ++ -- % & ^ ! |
~ &= ^= |= && || %= [] () , ->* -> new
delete new[] delete[]
それは、オーバーロードされたメッセージパッシングに何をさせたいかによって異なります。
Objective Cでのメッセージパッシングは動的であり、いくつかのレベルでメッセージパッシングシステムにコードを挿入できます。最も簡単なのはメッセージ転送です。それを超えて、動的メソッド解決とランタイムclass_replaceMethod()
からの使用があります。
Objective-Cプロパティのドット演算子は、メッセージパッシングのショートカットです。これは、メッセージパッシング呼び出し-prop
と同じように機能-setProp:
し、プロパティを取得および設定します。
C構造体のドット演算子はオーバーロードできません。