Я смущен вопросом, который я видел в тесте С++. Код здесь:
#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
?