Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конструирование.doc
Скачиваний:
3
Добавлен:
22.08.2019
Размер:
182.78 Кб
Скачать

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)