
- •2. Перегрузка функций.
- •4. Использование операторов new и delete.
- •5. Понятие классов и экземпляров классов.
- •6. Описание классов(class, struct).
- •7. Вложенные классы.
- •8. Определение объектов при помощи классов.
- •9. Конструкторы и деструкторы классов.
- •10. Атрибуты доступа к компонентам классов.
- •11. Объявление и определение методов класса.
- •12. Вызов членов класса.
- •13. Перегрузка конструкторов.
- •14. Перегрузка операторов отношения.
- •15. Перегрузка логических операторов.
- •16. Перегрузка унарных операторов.
- •17. Перегрузка бинарных операторов.
- •18. Функция оператор как член класса.
- •19. Доступ к компонентам классов в зависимости от атрибутов доступа.
- •20. Введение в наследование. Базовые классы.
- •21. Производные классы.
- •22. Ограничение доступа к элементам класса.
- •23. Конструкторы базовых и производных классов.
- •24. Виртуальные базовые классы. Чисто виртуальные функции.
- •25. Использование указателей на базовые классы и производные классы. Виртуальные методы.
- •26. Потоки ввода-вывода. Понятие потока.
- •27. Иерархия классов ввода-вывода. Основные уровни иерархии. Классы потоков.
- •28. Стандартные классы, объекты и механизмы консольного ввода/вывода.
- •29. Стандартные классы, объекты и механизмы файлового ввода/вывода.
- •30. Файлы последовательного доступа и произвольного доступа.
- •31. Основы обработки исключений в с#. Генерация исключений.
- •32. Файлы последовательного доступа и произвольного доступа.
- •34. Основы обработки исключений в с#. Генерация исключений.
16. Перегрузка унарных операторов.
Унарные операторы - это те, которые имеют только один операнд (параметр). Типичные примеры унарных операторов - это унарный минус (меняющий знак на противоположный) и оператор инкремента ++.
Рассмотрим перегрузку унарных операторов на примере рассмотренного на прошлом уроке класса Vector. А именно, добавим в наш класс унарный минус, который будет менять вектор с координатами x и y на вектор с координатами -x и -y. Для этого добавьте в наш класс Vector следующие строки:
public static Vector operator -(Vector v){Vector res = new Vector(-v.x, -v.y);return res;}
Обратите внимание, что при перегрезке унарных операторов (как, впрочем, и преперегрузке бинарных), мы должны поставить модификатор static.
17. Перегрузка бинарных операторов.
Известно, что в Си-шарп существует ряд операторов для работы со встроенными типами данных. Это операторы «+», «-», «!», «==», «!=» и т.д. Например, бинарный оператор «+» выполняет операцию сложения над численными типами данных. Этот же самый оператор над строками выполняет конкатенацию (склеивание двух строк). Это происходит потому, что оператор «+» перегружен в классе String.
Простыми словами, перегрузка оператора - это реализация своего собственного функционала этого оператора для конкретного класса.
Перегрузка оператора реализуется похожим способом на перегрузку методов. Здесь используется ключевое слово operator. Общая структура перегрузки операторов имеет следующий вид:
Перегрузка бинарного* оператора:
public static [возвращаемый_тип] operator [оператор]([тип_операнда1] [операнд1], [тип_операнда2] [операнд2]) {//функционал оператора}
Модификаторы public и static являются обязательными. На месте [оператор] может стоять любой оператор, который можно перегрузить. Не все операторы в Си-шарп разрешается перегружать. Ниже наведены операторы которые можно перегружать, и те которые нельзя:
Можно перегружать Бинарные операторы: +, -, *, /, %, &, |, ^, <<, >>, ==, !=, <, >, <=, >=
Нельзя перегружать [] – функционал этого оператора предоставляют индексаторы () – функционал этого оператора предоставляют методы преобразования типов +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>= краткие формы оператора присваивания будут автоматически доступны при перегрузке соответствующих операторов (+, -, * …).
18. Функция оператор как член класса.
В языке C# оператор — это элемент программы, который применяется для одного или нескольких операндов в выражении или инструкции. Операторы, в которых используется один операнд, например оператор инкремента (++) или new, называются унарными. Операторы, в которых используются два операнда, например арифметические операторы (+,-,*,/), называются бинарными. Для одного оператора — условного (?:) — используются три операнда, и такой оператор является единственным троичным оператором в C#.
В Си-шарп есть три условных оператора: «if-else», «switch» и «?:» - тернарный оператор.
Тернарный оператор «?:»
Этот оператор используется для сокращения объема кода. Им можно заменять простые по сложности операторы if-else. Тернарный оператор имеет такую структуру:
логическое выражение ? выражение1 : выражение2
Пример использования тернарного оператора «?:» в той же программе для проверки числа на чётность:
static void Main(string[] args)
{ int a; Console.WriteLine("Введите число:");a = Convert.ToInt32(Console.ReadLine()); Console.WriteLine( a % 2 == 0 ? "Число чётное" : "Число нечётное" ); Console.ReadKey();}