ВУЗ:
Составители:
Рубрика:
Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
Операции ввода/вывода нельзя определить как методы класса из-за
того, что первым операндом этой операции должен быть объект входного
или выходного потока. Таким образом, перегрузка этих операций
осуществляется с помощью дружественных функций.
Определим для класса Matrix ввод/вывод:
class Matrix
{
. . .
friend istream& operator >> (istream&, Matrix&);
friend ostream& operator << (ostream&, Matrix);
. . .
};
// перегруженная операция ввода матрицы
istream& operator >> (istream& in, Matrix& ob)
{
if(ob.a != NULL)
{
for(int i = 0; i < ob.m; i++)
for(int j = 0;j < ob.n; j++)
in >> ob.a[i][j];
}
return in;
}
// перегруженная операция вывода матрицы
ostream& operator << (ostream& out, Matrix ob)
{
if(ob.a != NULL)
{
out << "Матрица:" << endl;
for(int i = 0; i < ob.m; i++)
{
for(int j = 0; j < ob.n; j++)
out << ob.a[i][j] << "\t";
out << endl;
}
}
else
out << "Матрица пуста" << endl;
return out;
}
Первым параметром операций ввода/вывода является ссылка на
поток ввода или вывода. В функции ввода второй параметр должен
передаваться по ссылке, поскольку в нем сохраняются вводимые данные.
86
Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
Операции ввода/вывода нельзя определить как методы класса из-за
того, что первым операндом этой операции должен быть объект входного
или выходного потока. Таким образом, перегрузка этих операций
осуществляется с помощью дружественных функций.
Определим для класса Matrix ввод/вывод:
class Matrix
{
. . .
friend istream& operator >> (istream&, Matrix&);
friend ostream& operator << (ostream&, Matrix);
. . .
};
// перегруженная операция ввода матрицы
istream& operator >> (istream& in, Matrix& ob)
{
if(ob.a != NULL)
{
for(int i = 0; i < ob.m; i++)
for(int j = 0;j < ob.n; j++)
in >> ob.a[i][j];
}
return in;
}
// перегруженная операция вывода матрицы
ostream& operator << (ostream& out, Matrix ob)
{
if(ob.a != NULL)
{
out << "Матрица:" << endl;
for(int i = 0; i < ob.m; i++)
{
for(int j = 0; j < ob.n; j++)
out << ob.a[i][j] << "\t";
out << endl;
}
}
else
out << "Матрица пуста" << endl;
return out;
}
Первым параметром операций ввода/вывода является ссылка на
поток ввода или вывода. В функции ввода второй параметр должен
передаваться по ссылке, поскольку в нем сохраняются вводимые данные.
86
Страницы
- « первая
- ‹ предыдущая
- …
- 84
- 85
- 86
- 87
- 88
- …
- следующая ›
- последняя »
