13

C++ テストで見た質問と混同しています。コードは次のとおりです。

#include <iostream>
using namespace std;

class Int {
public:
    int v;
    Int(int a) { v = a; }
    Int &operator[](int x) {
        v+=x;
        return *this;
    }
};
ostream &operator<< (ostream &o, Int &a) {
    return o << a.v;
}

int main() {
    Int i = 2;
    cout << i[0] << i[2]; //why does it print 44 ?
    return 0;
}

これが印刷されると確信していまし24たが、代わりに印刷され44ます。誰かにこれを明確にしてもらいたいです。累積評価ですか?また、<< バイナリインフィックスですか?

前もって感謝します

編集:演算子のオーバーロードが明確に定義されていない場合、誰かがここでオーバーロードされた演算子のより良い実装を提供して、出力することができます24か?

4

2 に答える 2