Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Краткие теоретические сведения

Читайте также:
  1. I. КРАТКИЕ СВЕДЕНИЯ О МОНГОЛАХ
  2. I. Краткие сведения о Шуе
  3. I. ОБЩИЕ СВЕДЕНИЯ ПО ТЕОРИИ
  4. II-1. Краткие технические характеристики современных котельных агрегатов.
  5. V. Системно-теоретические модели
  6. X. ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ
  7. Анализ экономико-финансовых показателей предприятия. Общие сведения о задачах

Перегрузка операций

Перегрузка операций осуществляется для того, чтобы можно было использовать стандартные операторы, например «*», «+» и др., для работы с типами переменных, определенных пользователем. Например, для перемножения двух экземпляров класса.

Формат записи перегруженного оператора зависит от того, как он объявлен. Если он объявлен как функция-член класса, то его формат записи будет выглядеть так:

<тип возвращаемого значения> operator +(список параметров)

или

<тип возвращаемого значения> &operator +(список параметров)

где «+» – это обозначение оператора, который перегружается, а слово operator - это зарезервированное слово языка C++.

Перегруженный оператор может быть объявлен также как дружественная функция. Формат записи аналогичен выше описанному, только перед типом возвращаемого значения ставится зарезервированное слово friend. Дружественная функция описывается за пределами класса, однако имеет доступ даже к закрытым членам класса.

 

Требования к написанию программы:

Класс должен быть объявлен в header (.h) файле. Описание функций членов класса должно производиться за пределами класса. Главная функция main должна находиться в source (.cpp) файле.

Варианты заданий:

1. Создать класс вектор, содержащий ссылку на float. Класс имеет конструктор с одним параметром, выделяющий динамическую память под вектор, деструктор, очищающий динамическую память. Определить перегруженный оператор «+» (перегруженный оператор возвращает экземпляр класса вектор, элементы которого равны сумме элементов двух экземпляров класса типа вектор) как дружественную функцию. Определить перегруженный оператор «*»(перегруженный оператор возвращает экземпляр класса вектор, каждый элемент которого умножен на целое число)с целым числом как функцию-член класса, оператор «-» (аналогично умножению, только вычитание вещественного числа) с вещественным числом. Определить функцию печати.

2. Создать класс вектор, содержащий ссылку на double. Класс имеет конструктор с одним параметром, выделяющий динамическую память под вектор, деструктор, очищающий динамическую память. Определить перегруженный оператор «*»(перегруженный оператор возвращает экземпляр класса вектор, элементы которого равны произведению элементов двух экземпляров класса типа вектор) как дружественную функцию, «+=» (перегруженный оператор возвращает экземпляр класса вектор, каждый элемент которого сложен с целым число) как функцию-член класса, оператор «— =» (аналогично сложению, только вычитание вещественного числа) с вещественным числом. Определить функцию печати.

3. Создать класс вектор, содержащий ссылку на int. Класс имеет конструктор с одним параметром, выделяющий динамическую память под вектор, деструктор, очищающий динамическую память. Определить функцию-член нахождения суммы элементов вектора. Определить перегруженный оператор «-» (оператор возвращает переменную типа int, которая равна разнице сумм элементов двух экземпляров класса) как дружественную функцию. Определить оператор «– =» (перегруженный оператор возвращает экземпляр класса вектор, от каждого элемента которого отнято целое число) с целым числом. Определить оператор «*» (аналогично оператору «– =», только умножено на вещественное число) с вещественным числом. Определить функцию печати.

4. Создать класс вектор, содержащий ссылку на unsigned. Класс имеет конструктор с одним параметром, выделяющий динамическую память под вектор, деструктор, очищающий динамическую память. Определить функцию-член нахождения максимального элемента вектора. Определить перегруженный оператор «+»(оператор возвращает переменную типа unsigned, которая равна сумме максимальных элементов двух экземпляров класса) как дружественную функцию, оператор «*» (перегруженный оператор возвращает экземпляр класса вектор, каждый элемент которого умножен на целое без знаковое число целое число) как функцию-член. Определить функцию печати.

5. Создать класс вектор, содержащий ссылку на unsigned long. Класс имеет конструктор с одним параметром, выделяющий динамическую память под вектор, и деструктор, очищающий динамическую память. Определить функцию-член нахождения минимального элемента вектора. Определить перегруженный оператор «-» (оператор возвращает переменную типа long, которая равна разнице минимальных элементов двух экземпляров класса) как дружественную функцию, оператор «+» (перегруженный оператор возвращает экземпляр класса вектор, каждый элемент которого сложен с целым длинным без знаковым числом) с типа unsigned long. Определить функцию печати.

6. Создать класс вектор, содержащий ссылку на unsigned char. Класс имеет конструктор с одним параметром, выделяющий динамическую память под вектор, и деструктор, очищающий динамическую память. Определить функцию-член нахождения суммы четных по индексу элементов вектора. Определить перегруженный оператор «*» (оператор возвращает переменную типа unsigned char, которая равна произведению сумм четных по индексу элементов двух экземпляров класса) как дружественную функцию; оператор «*=» (перегруженный оператор возвращает экземпляр класса вектор, каждый элемент которого умножен на число типа unsigned char) как функцию-член. Определить функцию печати.

7. Создать класс вектор, содержащий ссылку на long double. Класс имеет конструктор с одним параметром, выделяющий динамическую память под вектор, и деструктор, очищающий динамическую память. Определить функцию-член нахождения суммы квадратов элементов вектора. Определить перегруженный оператор «-» (оператор возвращает переменную типа, long double которая равна разнице сумм квадратов элементов двух экземпляров класса) как дружественную функцию; оператор «*» (перегруженный оператор возвращает экземпляр класса вектор, каждый элемент которого умножен на число типа long double). Определить функцию печати.

8. Определить класс - комплексное число, содержащий два поля - вещественная и мнимая часть. Перегрузить операторы «+», «-». Сложение и вычитание должно производиться как с элементами данного класса, так и со встроенными float.

9. Определить класс - комплексное число, содержащий два поля - 0вещественная и мнимая часть. Перегрузить операторы, «++», «— —». Операции должны производиться как с элементами данного класса, так и со встроенными int.

10. Определить класс - комплексное число, содержащий два поля - вещественная и мнимая часть. Перегрузить операторы «+=», «- =». Операции должны производиться как с элементами данного класса, так и со встроенными double.

11. Определить класс - комплексное число, содержащий два поля - вещественная и мнимая часть. Перегрузить различные операторы «*», «/». Операции должны производиться как с элементами данного класса, так и со встроенными float.


Дата добавления: 2015-11-26; просмотров: 75 | Нарушение авторских прав



mybiblioteka.su - 2015-2024 год. (0.006 сек.)