- •1 Базовые принципы объектно-ориентированного программирования.
- •2 Базовые блоки ооп, объект и класс.
- •3 Реализация механизма сокрытия информации.
- •4 Основные свойства и правила использования конструкторов.
- •5 Правила использования деструкторов.
- •6 Директивы процессору.
- •8 Декларация, инициализация указателя. Операции над указателями.
- •9 Операторы для динамического выделения и освобождения памяти.
- •11 Указатели и динамические массивы.
- •12 Механизм «функции-друга».
- •13 Свойства и правила использования структур и объединений.
- •14 Перегрузка операторов.
- •15 Наследование. Производные классы.
- •1 Дублирование (числа, температура)
- •2 Миним и макси (произведение, количество)
- •3 Поиск столбцов (нулевой элемент, оценка)
- •4 Функция div() (искл ситуация)
- •5 Дружественная функция (класс)
- •Int isneg(myclass ob)
- •Int isneg(myclass ob)
- •6 Вычисление выражения
13 Свойства и правила использования структур и объединений.
Структура –в отличии от массива , все элементы которого однатипны, СТР может содержать элементы разных типов(ключевое слова struct). Элементы СТР наз полями и могут иметь любой тип, и быть указателями на него. Доступ к полям СТР выполняется с помощью операции выбора .(точка) при обращении к полю через имя структуры и -> при обращении через указатель.
- в С++ struct и union можно использовать так же, как класс;
- в C++ элементы структуры или объединения по умолчанию принимаются как public;
- для ключевого слова struct атрибут public может явно переопределяться на private или protected;
- для ключевого слова union явное переопределение атрибута доступа невозможно;
- union можно инициализировать, но всегда значение будет присвоено первой объявленной компоненте.
- можно описать структуру без имени struct{...} s1,s2,...;
- объединение без имени и без списка описываемых объектов называется анонимным объединением;
- доступ к компонентам анонимного объединения осуществляется по их имени;
- глобальные анонимные объединения должны быть объявлены статическими;
- анонимные объединения не могут иметь компонент-функций;
Обьедения(union) представляет собой структуру все поля которой распологаются по одному и тому же адресу. (ключ.слово union) Union можно инициализировать- значение будет объявлена 1-ой начальной компоненте.
Объеденение не может содержать битовые поля, вирт.методы, кострукторы, деструкторы, операц.присваивания.Объеденение не может входить в иерархию класса
Объед. применяют для экономии памяти в тех случаях когда известно, что больше одного поля одновременно не треб-ся
Ананимное объеденение - объеденение без имени,не имеет компонент.ф. Структуру можно объеденять без имени
14 Перегрузка операторов.
Перегрузка операторов позволяет упростить арифметические и логические операции со сложными типами данных.
- Если операнды имеют встроенный тип данных, то будет заложена стандартная операция;
- Если операнды имеют тип данных пользователя, т.е. являются объектами класса, для которого операция была перегружена, то будет заложена перегруженная операция, запрограммированная пользователем.
- Синтаксис определения "перегрузки" оператора таков: тип operator @ (список_параметров) {код, определяющий смысл указанной операции}, где @ - символ перегружаемой операции. Перегрузка операторов позволяет упростить арифметические и логические операции со сложными типами данных
Операции для конкретного класса перегружаются или методом этого класса, или функцией-другом для этого класса следующего:
Отличия перегрузки операций при помощи метода класса или функции- друга следующие:
- @а - унарная операция может быть перегружена методом без параметров
- - унарная операция может быть перегружена функцией-другом с одним параметром, т.к. у метода имеется первый скрытый от нас параметр (указатель this), который автоматически устанавливается на единственный операнд унарной операции, а функция-друг такого указателя не имеет ,потому при перегрузке ее параметров, ее операнд и передают;
- а1 @ а2 - бинарная операция перегружается методом класса с одним параметром
- бинарная операция перегружается функцией-другом с двумя параметрами. (т.к. при ее перегрузке методом на первый операнд устанавливается скрытый указатель {this), а второй предаем через параметр;
- при перегрузке функцией-другом первый операнд передается функции через первый параметр, второй - через второй параметр.
Перегрузка функций.
"Перегрузки" функций - использования одного и того же имени для разных функций.
- Компилятор различает такие функции по числу и типу параметров.
- В C++ могут перегружаться любые функции, в том числе и функции-члены класса. При этом действуют следующие ограничения:
- не могут перегружаться функции, имеющие совпадающие тип и число аргументов, но разные типы возвращаемых значений;
- не могут перегружаться функции, имеющие неявно совпадающие типы аргументов, например int и &int.
- функции-члены класса могут быть "перегружены". Особенно удобным это будет для инициализирующих объект функций, т. е. для конструкторов.
- деструкторы не могут перегружаться. как деструктор не может иметь списка аргументов
Ниже перечислены все операторы, и встроенные функциональные вызовы которые могут быть переопределены: + - * / = < > += -= *= /= << >> <<= >>= == != <= >= ++ -- % &.