Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пиппец 2.doc
Скачиваний:
107
Добавлен:
07.06.2015
Размер:
3.16 Mб
Скачать

Пример определения шаблона класса

Шаблон класса для работы с одномерным массивом элементов произвольного типа может быть определен следующим образом:

template <class Type>

class Arr

{

Type* a;

int size;

public:

//Конструктор без аргументов создаёт

//массив из 10 элементов:

Arr() { a = new Type[10]; size = 10;

//Конструктор создаёт

//массив из n элементов:

Arr(int n);

~Arr() {delete a;}

};

//Внешнее определение конструктора:

template <class Type>

Arr<Type>::Arr(int n)

{

a = new Type[n]; size = n;

}

Как видно из примера, функции-элементы шаблона (в данном случае конструкторы и деструктор) могут определяться в теле класса (т.е. как встроенные), а могут определяться и вне класса (внешние). Если функция-элемент шаблона определена вне класса, то ее определение имеет следующий формат:

template <<список аргументов шаблона>>

<тип возврата> <имя класса> <<аргументы шаблона>> :: <имя функции> (<список формальных параметров функции>)

<тело функции>

Шаблон класса служит образцом, по которому компилятор автоматически порождает представители класса, рассчитанные на конкретный тип.

Использование шаблона класса

Шаблон класса описывает, как конкретный класс может быть построен на основании одного или нескольких фактических типов. Компилятор автоматически создает представитель класса для указанных типов. Такой процесс называется конкретизацией. Он происходит при объявлении объектов класса. Чтобы создать представитель шаблонного класса, можно просто указать имя шаблона со списком аргументов, заключенным в угловые скобки, в качестве спецификатора типа.

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

Arr<int> mas1(20);

Здесь создан объект класса Arr, имеющий имя mas1. Формальный аргумент шаблона Type заменился именем действительного типа int. Конструктору передано значение аргумента 20, что означает, что в качестве данного-члена класса можно использовать массив из 20-ти элементов. Сами элементы имеют тип int.

Теперь объект mas1 можно использовать точно так же, как и объекты обычных классов.

1. Векторная алгебра.Аффинные координаты.Формулы преобразования координат.Прямые и плоскости

Отрезки иназываются эквиполлентными, если они одинаково направлены и имеют равные длины ().

Возьмем на плоскости какую-нибудь точку О и произвольный базис .Тройка, состоящая из точки О и базиса , называется аффинной системой координат на плоскости и обозначается: Точка О – называется началом координат, а векторы - координатными векторами. Ось координат, на которой положительное направление определяется вектором называется осью абсцисс: , а другая ось – осью ординат: Иногда систему координат обозначают через

Векторы

Вектор – это множество всех направленных отрезков, любые два из которых эквиполлентны. Если хотя бы один из направленных отрезков этого множества нулевой, то все направленные отрезки множества нулевые. В этом случае вектор называется нулевым или нуль-вектором (). Вектор равен вектору ()- множество совпадает с множеством , т. е. и - один и тот же вектор, но по-разному обозначенный.

Рассмотрим систему векторов и зададим n действительных чисел Вектор называется линейной комбинацией данных векторов .(вектор b линейно выражается через векторы )

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