Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора 57стр.doc
Скачиваний:
54
Добавлен:
15.06.2014
Размер:
478.21 Кб
Скачать

Вопрос 10. Указатель this.

В С++ каждый объект сопро­вождается указателем на самого себя — называемым указателем this — это неявный аргумент во всех ссылках на элементы внутри этого объекта. Ука­затель this можно использовать также и явно. Каждый объект может опре­делить свой собственный адрес с помощью ключевого слова this.

Указатель this неявно используется для ссылки как на данные-элементы, так и на ф-ции-эл-ты объекта. Тип указателя this зависит от типа объекта и от того, объявлена ли ф-ция-э-т, в к-ой используется this, как const. Всегда ссылается на объект.; использ для доступа к данным и возвращения значений.

Вопрос 11. Операции new и delete.

Операции new и delete обеспечивают более удобные средства для реали­зации динамического распределения памяти (для любых встроенных или оп­ределенных пользователем типов)

New имеет один операнд

переменная_указатель = new тип_переменной;

переменная_указатель = new(тип_переменной);

переменная_указатель = new тип_переменной[];

typeNamePtr = new TypeName;

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

Перимущества:

- new автоматически определяет кол-во неоходимой памяти

- new возвр указатель требуемого типа

- имеется возм-ть инициализации объекта

- можно выполнить перегрузку опреатора new глобально или для конкр класса.

Delete освобождает память, на к-ую указывает переменная_указатель.

Оператор delete следует использ-ть только для Переменная_указатель, выделенную с помощь new.

Единств операнд – указатель , получ с помощью new.

При удалении объекта вначале вызыв деструктор, затем выполн delete .

delete переменая_указатель;

delete[] переменая_указатель;

Вопрос 12. Статические члены класса.

Члены класса могут исп-ся с ключ-м словом static. Когда член класса объявл-ся как статический, он тем самым даёт компилятору сообщение, что может сущ-ть только одна копия этого члена, сколько бы объектов этого класса не создавалось. Статический член исп-ся совместно всеми объектами. Все стат. члены инициал. нулями при создании первого объекта.

Класс, содерж static члены, объявл как глобальный.

При объявлении стат-го члена класса этот член не определяется. Статические элементы могут быть открытыми(доступ к Эл-там класса возможен посредством любого объекта класса), закрытыми или защищенны­ми (protected; должны быть доступны открытым функциям-элементам этого класса или дру­зьям класса). Статическим данным-элементам можно задать начальные зна­чения один (и только один) раз в области действия файл. Они существуют даже тогда, когда не существует никаких объектов этого класса.

class counter{

static int count;

};

int counter::count;

Ф-ция-эл-т тоже м.б. объявлена как static, если она не должна иметь доступ к нестатическим Эл-там класса. Они не могут прямо ссылаться на нестатические данные или нестат. ф-и, объявл-е в их классе. Причина – отсутствие указателя this. =>, они могут обращ. только к статич. данным или ф-ям данного класса. Также они не могут быть виртуальными или объявл. с модиф-ми const; ей не перед-ся this.

Осн примеры использ-я:

- одна область памяти

- стат компоненты не явл частью объектов класса

- статич перем-я сущ даже при отсутствии объектов данного класса

- их можно инициализ только в файле, в к-ом они объявлены