4 Реализовать класс String для работы со строками символов. Перегру-
зить операторы =, += так, чтобы производилось сложение строки и объекта
Предоставить конструктор копирования.
5 Создать класс, в котором перегрузить операторы:
6 для перемножения двух одномерных массивов;
+ для сложения двух одномерных массивов.
Память под матрицы отводить динамически. Предоставить конструктор копи-
рования.
6 Реализовать класс String для работы со строками символов. Перегру-
зить оператор - (минус) так, чтобы определить, насколько одна строка длиннее
другой. Предоставить конструктор копирования.
7 Реализовать класс String для работы со строками символов. Перегру-
зить оператор >, так, чтобы возвратить разность кодов первой пары несовпа-
дающих символов в строках. Предоставить конструктор копирования.
8 Создать класс, в котором перегрузить оператор & для пересечения двух
множеств. Память под массивы отводить динамически. Предоставить конструк-
тор копирования.
9 Создать класс, в котором перегрузить оператор + для объединения двух
множеств. Память под массивы отводить динамически. Предоставить конструк-
тор копирования.
6.7 Параметризованные классы
6.7.1 Шаблоны функций
Шаблоны позволяют определять при помощи одного фрагмента кода це-
лый набор взаимосвязанных функций, называемых шаблонными функциями.
Мы может написать один шаблон функции сортировки массива, на основе ко-
торого С++ будет автоматически генерировать отдельные шаблонные функции,
сортирующие массивы типов int, float, double и т.д. Все описания шаблонов
функций начинаются с ключевого слова template, за которым следует список
формальных параметров шаблона заключенный в угловые скобки (о); каждо-
му формальному параметру должно предшествовать ключевое слово class или
typename, например:
template <class Т>
или template < typename Т>
или template < class Т, class T1>
Формальные параметры в описании шаблона используются для опреде-
ления типов параметров функции, типа возвращаемого функцией значения и
типов переменных, объявляемых внутри функции. Далее, за этим заголовком,
следует обычное описание функции. Необходимо заметить, что ключевое слово
class или typename, используемое в шаблоне функции при задании типов пара-
метров, фактически означает «любой встроенный тип или тип, определяемый
пользователем». Каждый формальный параметр из списка описания шаблона
функции должен появиться в списке параметров функции, по крайней мере,
один раз. Имя формального параметра может использоваться в списке парамет-
225