1

重複の可能性:
Objective-Cで演算子をオーバーロードできますか?

で、objective-C ++では、メッセージパッシング演算子、つまり[]をオーバーロードすることは可能ですか?「。」と同じことは可能ですか?

4

3 に答える 3

1

Objective-CではなくC++の機能だけでの演算子のオーバーロード。質問を見てください: Objective-Cで演算子をオーバーロードできますか?

私のC++の知識(Objective-C ++で完全にサポートされているかどうかはわかりません)から、[]演算子をオーバーロードすることはできますが、。をオーバーロードすることはできません。あなたがここで読むことができるように演算子。

編集(JefferyThomas tyの入力後):Objective-C ++は、メッセージパッシング演算子のオーバーロードをサポートしていません。私が与えた答えは正しいですが、その演算子は適用されません(配列の添え字またはc ++の他の「機能」にのみ)

于 2012-09-10T12:44:51.523 に答える
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&がないと、アクセスのみが可能であり、変更はできません。詳細はこちらをご覧ください

Objective-Cでは演算子をオーバーロードすることはできません。「。」のオーバーロードに関する質問に関しては、オーバーロードできる演算子の数は次のとおりです。

+    -    *    /    =    <    >    +=   -=   *=   /=   <<   >>
<<=  >>=  ==   !=   <=   >=   ++   --   %    &    ^    !    |
~    &=   ^=   |=   &&   ||   %=   []   ()   ,    ->*  ->   new 
delete    new[]     delete[]
于 2012-09-10T13:01:59.773 に答える
0

それは、オーバーロードされたメッセージパッシングに何をさせたいかによって異なります。

Objective Cでのメッセージパッシングは動的であり、いくつかのレベルでメッセージパッシングシステムにコードを挿入できます。最も簡単なのはメッセージ転送です。それを超えて、動的メソッド解決とランタイムclass_replaceMethod()からの使用があります。

Objective-Cプロパティのドット演算子は、メッセージパッシングのショートカットです。これは、メッセージパッシング呼び出し-propと同じように機能-setProp:し、プロパティを取得および設定します。

C構造体のドット演算子はオーバーロードできません。

于 2012-09-10T13:13:11.560 に答える