Объектно-ориентированное программирование на C++. Андрианова А.А - 217 стр.

UptoLike

Объектно-ориентированное программирование на С++
// конструктор копирования матрицы
template <class T> Matrix<T>::Matrix(const Matrix<T>& ob)
{
n = ob.n;
m = ob.m;
if(ob.a == NULL)
{
a = NULL;
return;
}
a = new T* [m];
for(int i = 0; i < m; i++)
a[i] = new T [n];
for(int i = 0; i < m; i++)
for(int j = 0; j < n; j++)
a[i][j] = ob.a[i][j];
}
// деструктор матрицы
template <class T> Matrix<T>::~Matrix()
{
if(a != NULL)
{
for(int i = 0; i < m; i++)
delete [] a[i];
delete [] a;
}
}
// шаблон дружественного оператора ввода матрицы
template <class T>
istream& operator >>(istream& in, Matrix<T>& ob)
{
if(ob.a != NULL)
{
for(int i = 0; i < ob.m; i++)
for(int j = 0; j < ob.n; j++)
in >> ob[i][j];
}
return in;
}
// шаблон дружественного оператора вывода матрицы
template <class T>
ostream& operator <<(ostream& out, Matrix<T>& ob)
{
if(ob.a != NULL)
217
                     Объектно-ориентированное программирование на С++

// конструктор копирования матрицы
template  Matrix::Matrix(const Matrix& ob)
{
     n = ob.n;
          m = ob.m;
     if(ob.a == NULL)
     {
          a = NULL;
          return;
     }
     a = new T* [m];
     for(int i = 0; i < m; i++)
          a[i] = new T [n];
     for(int i = 0; i < m; i++)
          for(int j = 0; j < n; j++)
               a[i][j] = ob.a[i][j];
}

// деструктор матрицы
template  Matrix::~Matrix()
{
     if(a != NULL)
     {
          for(int i = 0; i < m; i++)
               delete [] a[i];
          delete [] a;
     }
}

// шаблон дружественного оператора ввода матрицы
template 
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[i][j];
     }
     return in;
}

// шаблон дружественного оператора вывода матрицы
template 
ostream& operator <<(ostream& out, Matrix& ob)
{
     if(ob.a != NULL)

                                                                 217