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

UptoLike

Объектно-ориентированное программирование на С++
список_обобщенных_типов := class T1 [,class T2, .
. ., class TN], где Ti произвольный идентификатор
обобщенного типа.
Все методы шаблона класса являются шаблонами функций. Поэтому
при определении каждого метода следует указать то, что он является
шаблоном:
template <список_обобщенных_типов>
тип_возвращаемого_значения
имя_шаблона_класса<список_идентификаторов_обобщенных_типов>::
имя_метода(список_формальных_параметров)
{
. . .
}
Список формальных параметров метода может содержать параметры
как конкретных типов данных (int, double, Student и т.д.), так и
обобщенных. Это же относится и к типу возвращаемого значения метода.
Например, создадим шаблон класса «Квадратная матрица», в
котором в качестве обобщенного типа данных выступает тип элемента
матрицы.
template <class T> class QMatrix
{
private:
T** a; // массив элементов матрицы
int n; // размер матрицы
public:
// конструкторы и деструктор
QMatrix(int);
QMatrix()
QMatrix(const QMatrix<T>&);
~QMatrix();
// метод получения размера матрицы
int GetSize();
// перегруженные операторы
QMatrix<T> operator+(QMatrix<T>&);
QMatrix<T> operator*(QMatrix<T>&);
QMatrix<T>& operator=(QMatrix<T>&);
T* operator[](int);
QMatrix<T> operator!();
// метод вычисления определителя матрицы
T Determinant();
// метод получения минора матрицы
115
                          Объектно-ориентированное программирование на С++

    список_обобщенных_типов := class T1 [,class T2, .
. ., class TN], где Ti – произвольный идентификатор
обобщенного типа.
    Все методы шаблона класса являются шаблонами функций. Поэтому
при определении каждого метода следует указать то, что он является
шаблоном:

template <список_обобщенных_типов>
тип_возвращаемого_значения
имя_шаблона_класса<список_идентификаторов_обобщенных_типов>::
               имя_метода(список_формальных_параметров)
               {
               .    .    .
               }

    Список формальных параметров метода может содержать параметры
как конкретных типов данных (int, double, Student и т.д.), так и
обобщенных. Это же относится и к типу возвращаемого значения метода.
    Например, создадим шаблон класса «Квадратная матрица», в
котором в качестве обобщенного типа данных выступает тип элемента
матрицы.
     template  class QMatrix
     {
     private:
          T** a;    // массив элементов матрицы
          int n;    // размер матрицы
     public:
          // конструкторы и деструктор
          QMatrix(int);
          QMatrix()
          QMatrix(const QMatrix&);
          ~QMatrix();
          // метод получения размера матрицы
          int GetSize();
          // перегруженные операторы
          QMatrix operator+(QMatrix&);
          QMatrix operator*(QMatrix&);
          QMatrix& operator=(QMatrix&);
          T* operator[](int);
          QMatrix operator!();
          // метод вычисления определителя матрицы
          T Determinant();
          // метод получения минора матрицы

                                                                      115