- •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 Вычисление выражения
11 Указатели и динамические массивы.
Каждая переменная типа указатель занимает 4 байта памяти, и содержит адрес первого байта некоторого участка оперативной памяти
Динамические массивы создают с помощью операции new, при этом необходимо указать тип и размерность, например
int n = 100;
float *р = new float [n];
Динамически' массивы нельзя при создании инициализировать, и они не обнуляются.
Преимущество динамических массивов состоит в том, что размерность может быть переменной, то есть объем памяти, выделяемой под массив, определяется на этапе выполнения программы.
Доступ к элементам динамического массива осуществляется точно так же, как к статическим, например, к элементу номер 5 приведенного выше массива можно обратиться как
р[5] или *(р+5).
Память, зарезервированная под динамический массив с помощью new [], должна освобождаться оператором delete [], а
delete [] p;
Размерность массива в операции delete не указывается, но квадратные скобки обязательны.
Динамические двумерные массивы
В динамической области памяти можно создавать двумерное массивы с помощью операции new
При выделении памяти сразу под весь массив количество строк (самую левую размерность) можно задавать с помощью переменной или выражения, а количество столбцов должно быть константным выражением, то есть явно определено до выполнения программы.
Для правильной интерпретации объявлений полезно запомнить мнемоническое правило: «суффикс привязан крепче префикса».
Если при описании переменной используются одновременно префикс * (указатель) и суффикс [ ] (массив), то переменная интерпретируется как массив указателей, а не указатель на массив:
int *р[10]: — массив из 10 указателей на int.
Многомерный массив в C++ по своей сути одномерен.
Операции new[] и delete[] позволяют создавать и удалять динамические массивы, поддерживая при этом иллюзию произвольной размерности.
Организация двумерного динамического массива производится в два этапа.
Сначала создаётся одномерный массив указателей,
а затем каждому элементу этого массива присваивается адрес одномерного массива.
Для характеристик размеров массивов не требуется константных выражений.
12 Механизм «функции-друга».
Механизм «функции-друга» класса обеспечивает возможность доступа к любым элементам класса тем функциям, которые не входят в состав этого класса. То есть функция-друг класса - это обычная функция пользователя, которая благодаря данному механизму имеет полные права доступа ко всем без исключения элементам класса, независимо от их степени защищенности.
- функция-друг класса не является членом данного класса;
- к функции-другу не надо использовать операцию привязки (.) или (->).
- функция-друг - обычная функция, у нее отсутствует первый скрытый параметр this
- для обращения к элементам класса из функции-друга используют или ссылку, или указатель,
- функция-друг может иметь обычные параметры, например для инициализации данных объектов класса
- дружественная функция – не член класса, она не может быть задана через имя объекта.
- вызывается как обычная функция Isfactor(ob1)