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

Управление памятью. Операции new и delete. Указатель this.

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


Читайте также:
  1. Amp;НЕВЕРБАЛЬНОЕ УПРАВЛЕНИЕ
  2. G. ТРАНСГРАНИЧНОЕ УПРАВЛЕНИЕ - Международное сотрудничество; 1 млн. долл. США; 2-10 лет
  3. IX. Управление библиотечной деятельностью
  4. Remote win desktop. Удаленное управление ПК
  5. V 2. Административные правонарушения и административная ответственность в сфере таможенного дела. Государственное управление внешнеэкономической деятельностью и таможенным делом.
  6. V. Права человека, демократия и благое управление
  7. V. УПРАВЛЕНИЕ ПРОЕКТОМ

Операция new предназначена для выделения требуемого количества памяти в системе. Она возвращает указатель на выделенный участок памяти. Используется для создания переменных и структур данных в течение исполнения программы.

Мы не можем ждать, пока программа запустится и определит размер массива. Следующий подход работать не будет:

cin >> size; // получим желаемый размер массива

int arr [ size ]; // ошибка, размер массива должен быть константой!

Однако, мы можем сделать так:

ptr = new int [size];

Операция delete освобождает память, выделенную с использованием операции new. Квадратные скобки, следующие за операцией delete, означают, что мы освобождаем массив. При освобождении памяти, выделенной для одиночного объекта, использования скобок не требуется.

ptr = new SomeClass; // создаем один объект

delete ptr; // скобок не требуется

Однако при освобождении памяти, занимаемой массивом, скобки обязательны. Их использование подразумевает, что мы освобождаем память, используемую для всех членов массива, одновременно.

delete [ ] ptr;

Когда вы вызываете какой-либо метод, значением указателя this становится адрес объекта, для которого этот метод вызван. Его можно использовать для получения доступа к данным объекта. Рассмотрим пример:

class what

{

private:

int alpha;

public:

void tester()

{

this->alpha = 11; //то же,что alpha = 11;

cout << this->alpha; //то же, что cout << alpha;

}

};

Следует отметить, что указатель this нельзя использовать в статических методах, так как они не ассоциированы с конкретным объектом.


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


<== предыдущая страница | следующая страница ==>
Указатели. Инициализация. Арифметические операции.| Виртуальные функции.

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