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

UptoLike

Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
QMatrix<T> SubMatrix(int, int);
// метод получения обратной матрицы
QMatrix<T> InverseMatrix();
// дружественные функции ввода и вывода матрицы
template <class T> friend ostream& operator <<
(ostream&, QMatrix<T>&);
template <class T> friend istream& operator >>
(istream&, QMatrix<T>&);
};
Приведем определение некоторых методов данного шаблона класса.
Напомним, что при определении метода перед его именем указывается
имя класса, которому он принадлежит. Также следует поступать и при
определении метода шаблона класса, только в этом случае указывается
параметризированное имя шаблона:
// конструктор из шаблона класса квадратной матрицы
template <class T> QMatrix<T>::QMatrix(int n1)
{
n = n1;
a = new T* [n];
for(int i = 0; i < n; i++)
a[i] = new T [n];
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
a[i][j] = 0;
}
// операция сложения из шаблона класса квадратной матрицы
template <class T>
QMatrix<T> QMatrix<T>::operator+(QMatrix<T>& ob)
{
if(ob.n == n)
{
QMatrix<T> temp(n);
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
temp.a[i][j] = a[i][j] + ob.a[i][j];
return temp;
}
else
throw 1;
}
// операция умножения из шаблона класса квадратной матрицы
template <class T>
QMatrix<T> QMatrix<T>::operator*(QMatrix<T>& ob)
116
                                Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
           QMatrix SubMatrix(int, int);
           // метод получения обратной матрицы
           QMatrix InverseMatrix();
           // дружественные функции ввода и вывода матрицы
           template  friend ostream& operator <<
                               (ostream&, QMatrix&);
           template  friend istream& operator >>
                               (istream&, QMatrix&);
      };

    Приведем определение некоторых методов данного шаблона класса.
Напомним, что при определении метода перед его именем указывается
имя класса, которому он принадлежит. Также следует поступать и при
определении метода шаблона класса, только в этом случае указывается
параметризированное имя шаблона:
      // конструктор из шаблона класса квадратной матрицы
      template  QMatrix::QMatrix(int n1)
      {
           n = n1;
           a = new T* [n];
           for(int i = 0; i < n; i++)
                a[i] = new T [n];
           for(int i = 0; i < n; i++)
                for(int j = 0; j < n; j++)
                     a[i][j] = 0;
      }

      // операция сложения из шаблона класса квадратной матрицы
      template 
      QMatrix QMatrix::operator+(QMatrix& ob)
      {
           if(ob.n == n)
           {
                QMatrix temp(n);
                for(int i = 0; i < n; i++)
                     for(int j = 0; j < n; j++)
                          temp.a[i][j] = a[i][j] + ob.a[i][j];
                return temp;
           }
           else
                throw 1;
      }


      // операция умножения из шаблона класса квадратной матрицы
      template 
      QMatrix QMatrix::operator*(QMatrix& ob)

116