Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
В предыдущих лекциях, используя перегрузку операторов вставки и извлечения для создаваемых классов, был реализован консольный ввод/вывод. Однако поскольку все потоки C++ одинаковы, то одинаково перегруженная, например, функция вставки, может использоваться без каких-либо изменений для вывода на экран или в файл. Перегружаемые функции вставки и извлечения так же, как и манипуляторы ввода/вывода, могут использоваться с любым потоком. Если вы "жестко" зададите использование конкретного потока в функции ввода/вывода, ее применение, несомненно, будет ограничено этим потоком. Следует стараться, где это только возможно, проектировать функции ввода/вывода универсально по отношению к потокам.
Пример: В следующей программе для класса coord перегружаются операторы << и >>. Следует обратить внимание, что оператор-функцию можно использовать для вывода, как на экран, так и в файл.
#include <iostream.h>
#include <fstream.h>
class coord { int x, y;
public: coord(int i, int j) { x = i; у = j;)
friend ostream &operator<<(ostream &stream, coord ob);
friend istream &operator>>(istream &istream, coord &ob);
};
ostream &operator<<(ostream &stream, coord ob)
{ stream << ob.x << ' ' << ob.у «'\n';
return stream;
}
istream &operator>>(istream &istream, coord &ob)
{ stream >> ob.x >> ob.y;
return stream;
}
main ()
{ coord ol(1, 2), o2(3, 4);
ofstream out("test");
if(!out)
{ cout << "Файл открыть невозможно\n”;
return 1;
}
out << ol << o2;
out.close();
ifstream in("test");
if(!in)
{ cout << "Файл открыть невозможно\n”;
return 1;
}
coord o3 (0, 0),o4(0,0);
in >> o3 >> o4;
cout << o3 << c4;
return 0;
}
}
Дата публикования: 2015-02-22; Прочитано: 276 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!