Как можно реализовать перегрузку операции >> так, чтоб выражение a>>b>>c (abc - объекты одного класса) работало следующим образом:
В объект c заносится значение объекта b, а в объект b - значение объекта
a
Ответ
Операция при перегрузке должна возвращать старое значение правого операнда. Тогда результатом
a >> b
будет занесение в b значения a, а результат - старое значение b - будет занесено в c
Что-то вроде
#include
using namespace std;
class I
{
int i;
public:
I(int i = 0):i(i){}
operator int() const { return i; }
};
I operator >> (const I& a, I& b)
{
I c = b;
b = a;
return c;
}
int main(int argc, const char * argv[])
{
I a(3), b(4), c(5);
a >> b >> c;
cout << a << " " << b << " " << c << endl;
}
Комментариев нет:
Отправить комментарий