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

Перегрузка бинарных операций

Синтаксис определения, инициализация указателя на структуру. Работа с полями структуры через указатели. | Определение функции. Передача аргументов и возврат значения по значению, ссылке и указателю. Аргументы по умолчанию. Константы аргументов функции. | Перегруженные функции. Встроенные функции. Рекурсивные функции. | Область видимости и класс памяти. | Объявление и инициализация одномерного и двумерного массивов. Работа с элементами массива через указатель. | Принципы ООП. Инкапсуляция. Наследование. Полиморфизм. | Конструкторы и деструкторы. Конструкторы копирования по умолчанию. | Объекты как аргументы методов и доступ к их числам. | Размещение в памяти членов объектов одного класса и способ создания общих полей (св-в). | Константные методы, их аргументы и константные объекты. |


Читайте также:
  1. V 8. Правовые основы таможенных операций в отношении отдельных категорий товаров. Правовые основы применения таможенных платежей. Правовое регулирование таможенных процедур.
  2. VI. Система показателей оценки доходности операций с краткосрочными облигациями
  3. Базовый и производный классы. Конструкторы производного класса. Перегрузка методов при наследовании. Алгоритм выбора перегруженного метода.
  4. Бухгалтерские счета для отражения хозяйственных операций
  5. Виды хирургических операций
  6. Вопрос 4. Типовые изменения баланса под влиянием хозяйственных операций.
  7. Вопрос 46. Характеристика операций, совершаемых на рынке ценных бумаг РФ.

Арифметические операции

Если мы могли складывать два объекта определенного класса с помощью какой-либо ф-ии, то используя перегрузку можно записать: а3 = а1+а2.

Для использования перегруженной операции используется ключевое слово operator. Сначала пишут возвращаемы тип / ключевое слово / затем саму операцию и потом список аргументов, заключенных в скобка.

Объявление метода operator+() в классе Ж выглядит: Ж operator+ (Ж); эта операция возвращает значение типа Ж и принимает один аргумент. (ж3 = ж1+ж2).

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

С помощью перегруженной операции можно складывать строки.

String operator+ (String ss) const

{ String temp; // временная переменная

if (strlen (str) + strlen (ss.str) < SZ)

{ strcpy (temp.str, str); // копируем содержимое первой строки

strcat (temp.str, ss.str); // добавляем содержимое второй строки

}

else

{ cout << "\nПереполнение!";

exit (1);

}

return temp; // возвращаем результат

}

Операции сравнения

Подход, используемый для функции operator<(), похож на перегрузку операции +, за исключением того, что эта операция имеет возвращаемый тип bool. Т.е. возвращаемым значением может быть false или true. Здесь используется операция условия: return (f1 < f2)? true: false;

Сравнение строк: operator==().

 

22) Перегрузка операций индексации массивов []

Обычно используется для доступа к элементам массива. Перегрузка операции индексации должна возвращать свое значение по ссылке.

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

Мы можем использовать один метод для вставки и вывода элементов массива. Здесь используется возвращение значения по ссылке.

int& access (int n)

{

if (n < 0 || n >= LIMIT)

{ cout << "\nОшибочный индекс!"; exit (1); }

return arr [ n ];

}

Существует способ вовсе без имен.

int& operator[ ] (int n)

{

if (n < 0 || n >= LIMIT)

{ cout << "\nОшибочный индекс!"; exit (1); }

return arr [ n ];

}

Перегруженная ф-ия должна возвращать свое значение по ссылке. В этом случае мы можем использовать обычную запись индексации массива: sa1[ j ] = j * 10, temp = sa1 [ j ].

 


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


<== предыдущая страница | следующая страница ==>
Строки на основе массива типа char и класса string| Преобразование типов от основного к пользовательскому.

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