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

UptoLike

Объектно-ориентированное программирование на С++
}
else
throw DimensionProductException();
}
// оператор умножения матриц на число типа Т справа
template <class T> Matrix<T> Matrix<T>::operator *(T b)
{
Matrix<T> temp(m, n);
for(int i = 0; i < m; i++)
for(int j = 0; j < n; j++)
temp[i][j] = a[i][j] * b;
return temp;
}
// оператор умножения матриц на число типа Т слева
template <class T>
Matrix<T> operator * (T b, Matrix<T>& ob)
{
Matrix<T> temp(ob.m, ob.n);
for(int i = 0; i < ob.m; i++)
for(int j = 0; j < ob.n; j++)
temp[i][j] = b * ob[i][j];
return temp;
}
// оператор присваивания матрицы
template <class T>
Matrix<T>& Matrix<T>::operator =(Matrix<T>& ob)
{
cout << "Matrix = " << endl;
if(n != ob.n || m != ob.m)
{
for(int i = 0; i < m; i++)
delete [] a[i];
delete [] a;
n = ob.n;
m = ob.m;
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];
return *this;
}
219
                    Объектно-ориентированное программирование на С++
    }
    else
       throw DimensionProductException();
}

// оператор умножения матриц на число типа Т справа
template  Matrix Matrix::operator *(T b)
{
     Matrix temp(m, n);
     for(int i = 0; i < m; i++)
          for(int j = 0; j < n; j++)
               temp[i][j] = a[i][j] * b;
     return temp;
}

// оператор умножения матриц на число типа Т слева
template 
Matrix operator * (T b, Matrix& ob)
{
     Matrix temp(ob.m, ob.n);
     for(int i = 0; i < ob.m; i++)
          for(int j = 0; j < ob.n; j++)
               temp[i][j] = b * ob[i][j];
     return temp;
}

// оператор присваивания матрицы
template 
Matrix& Matrix::operator =(Matrix& ob)
{
     cout << "Matrix = " << endl;
     if(n != ob.n || m != ob.m)
     {
          for(int i = 0; i < m; i++)
               delete [] a[i];
          delete [] a;
          n = ob.n;
          m = ob.m;
          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];
     return *this;
}


                                                                 219