Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга C++.doc
Скачиваний:
24
Добавлен:
10.11.2019
Размер:
2.48 Mб
Скачать

Шаблонный класс вектор

/*

Рассмотрим следующую задачу: Преобразовать класс Вектор в шаблонный класс, позволяющий создавать компоненты вектора произвольного типа. Для решения данной задачи воспользуемся материалами данного урока.

*/

// Предотвращение повторной компиляции кода

// с помощью директив условной компиляции

#if !defined VECTOR_H

#define VECTOR_H

template <typename T> // Объявление шаблонного класса

// typename - новое ключевое слово

// используется вместо

// template <class T>

class Vector

{

T *vect; // Вектор произвольного типа

int size; // Размерность вектора

public:

Vector(); // Конструктор по умолчанию

explicit Vector(int); // Конструктор, позволяющий задавать

// размерность вектора, но не являющийся

// конструктором преобразования

Vector(const T*, int); // Конструктор, позволяющий

// проинициализировать вектор с помощью

// существующего массива

Vector(const Vector&); // Конструктор копирования

~Vector(); // Деструктор

double operator ! (); // Функция, вычисляющая длину вектора

Vector& operator ++ (); // Увеличение всех компонент вектора

// на единицу (префикс)

Vector operator ++ (int); // Увеличение всех компонент вектора

// на единицу (постфикс)

Vector& operator -- (); // Уменьшение всех компонент вектора

// на единицу (префикс)

Vector operator -- (int); // Уменьшение всех компонент вектора

// на единицу (постфикс)

Vector& operator = (const Vector&); // Перегруженный оператор присваивания

T& operator [] (int); // Перегруженный оператор индексации

Vector& operator + (); // Перегруженный оператор + (унарный)

Vector operator - (); // Перегруженный оператор - (унарный)

Vector operator + (const Vector&); // Сложение двух векторов

Vector operator + (T); // Сложение вектора с числом

Vector& operator += (const Vector&);// Перегруженный оператор += для

// сложения двух векторов

Vector& operator += (T); // Перегруженный оператор += для

// сложения вектора с числом

Vector operator - (const Vector&); // Вычитание двух векторов

Vector operator - (T); // Вычитание числа из вектора

Vector& operator -= (const Vector&);// Перегруженный оператор -= для

// вычитания двух векторов

Vector& operator -= (T); // Перегруженный оператор -= для

// вычитания числа из вектора

T operator * (const Vector&); // Умножение векторов

Vector operator * (T); // Умножение вектора на число

Vector& operator *= (T); // Перегруженный оператор *= для

// умножения вектора на число

// Ввод вектора с клавиатуры

friend istream& operator >> (istream&, Vector&);

// Вывод вектора на экран

friend ostream& operator << (ostream&, Vector&);

int GetSize(); // Функция возвращает размерность вектора

};

#endif