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

UptoLike

Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
if(i == 1)
Kramer();
else
InverseMatrix();
}
catch(ZeroDevideException e)
{
JordanGauss();
}
else
JordanGauss();
}
Отметим, что если в качестве обобщенного типа выступает
пользовательский тип данных, то в нем должны быть определены методы,
которые используются в шаблоне. Например,
в шаблоне класса Matrix создается массив элементов обобщенного типа
T:
a[i] = new T [n];
Для этого вызывается конструктор класса T без параметров;
в шаблоне класса Matrix могут создаваться объекты с
начальной инициализацией:
T det = 0.0;
В этом случае конкретные пользовательские классы, используемые
при подстановке, должны содержать конструкторы с параметром типа
присваиваемого значения. Для приведенного примера в подставляемых
классах должен быть определен конструктор с параметром типа double;
в шаблоне класса Matrix осуществляется присваивание
элементам матрицы новых значений. Поэтому в пользовательском классе,
который будет подставлен вместо обобщенного типа, необходимо
определить оператор присваивания (кроме случаев, когда
предоставляемый компилятором оператор работает корректно);
если в шаблоне класса используются арифметические операции,
операции сравнения с объектами различных типов, операции
ввода/вывода и др., то в пользовательском классе, который будет
подставлен вместо обобщенного типа, необходимо определить эти
операции.
226
                                      Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
                           if(i == 1)
                                Kramer();
                           else
                                InverseMatrix();
                       }
                       catch(ZeroDevideException e)
                       {
                            JordanGauss();
                       }
                else
                       JordanGauss();
          }

        Отметим, что если в качестве обобщенного типа выступает
    пользовательский тип данных, то в нем должны быть определены методы,
    которые используются в шаблоне. Например,

•   в шаблоне класса Matrix создается массив элементов обобщенного типа
    T:
          a[i] = new T [n];

          Для этого вызывается конструктор класса T без параметров;

          •в шаблоне класса Matrix могут создаваться объекты с
    начальной инициализацией:

          T det = 0.0;

        В этом случае конкретные пользовательские классы, используемые
    при подстановке, должны содержать конструкторы с параметром типа
    присваиваемого значения. Для приведенного примера в подставляемых
    классах должен быть определен конструктор с параметром типа double;
         • в шаблоне класса Matrix осуществляется присваивание
    элементам матрицы новых значений. Поэтому в пользовательском классе,
    который будет подставлен вместо обобщенного типа, необходимо
    определить    оператор    присваивания     (кроме   случаев,   когда
    предоставляемый компилятором оператор работает корректно);
         • если в шаблоне класса используются арифметические операции,
    операции сравнения с объектами различных типов, операции
    ввода/вывода и др., то в пользовательском классе, который будет
    подставлен вместо обобщенного типа, необходимо определить эти
    операции.
    226