68955

Віртуальні деструктори

Лекция

Информатика, кибернетика и программирование

Явний опис деструкторів у програмах потрібний лише тоді, коли обєкт створюється у динамічній памяті. При використанні віртуальних деструкторів досить очевидними є переваги поліморфізму. Зазвичай, вони застосовуються тоді, коли при знищенні обєктів необхідно видалити обєкти похідного класу...

Украинкский

2014-09-28

26.5 KB

0 чел.

Лекція № 17

Тема: Віртуальні деструктори

Явний опис деструкторів у програмах потрібний лише тоді, коли об'єкт створюється у динамічній пам'яті. При використанні віртуальних деструкторів досить очевидними є переваги поліморфізму. Зазвичай, вони застосовуються тоді, коли при знищенні об'єктів необхідно видалити об'єкти похідного класу, на які посилаються покажчики на базовий клас. Саме це демонструє нижченаведений приклад.

#include<string.h> class TBase

{

private:

char *spl;

public:

TBase(const char *s)

{

spl = strdup(s) ;

}

virtual ~TBase()

{

delete spl;

}

};

class TDerived: public TBase

{

private: char *sp2; public: TDerived(const char*sl, const char *s2):TBase (s1)

{

sp2 = strdup(s2);

}

virtual -TDerived()

{

delete sp2;

} };

У головній програмі організуємо демонстрацію створення та знищення об'єкту похідного класу TDerived:


void main
() {

TBase *pbase;

pbase=new TDerived("String 1","String 2"); delete pbase;

}

Проведемо деяке додаткове спостереження даного коду та зробимо деструктор на деякий час звичайним, невіртуальним. Тоді останнім оператором головної програми при видаленні об'єкта через покажчик базового класу було б викликано лише деструктор базового класу, залишивши у динамічній пам'яті незвільнений рядок у вигляді sp2. Ця проблема розв'язується оголошенням віртуальних деструкторів: гарантовано, що у разі, коли знищується об'єкт класу TDerived, адресований покажчиком на TBase, буде знищено обидва рядки.

Якщо при оголошенні деструктору базового класу його було оголошено, як віртуальний, усі деструктори похідних класів також будуть віртуальними. На відміну від динамічних об'єктів в ієрархії, не має сенсу турбуватися про віртуальність деструкторів, що створюються у статичній пам'яті. Як правило, у таких випадках буде організовано правильний порядок виклику деструкторів у ієрархії, згенерованих компілятором по замовчуванню


 

А также другие работы, которые могут Вас заинтересовать

18014. Бизнес-статистика и прогнозирование 2.23 MB
  В.Г. Минашкин Н.А. Садовникова Р.А. Шмойлова Бизнесстатистика и прогнозирование СОДЕРЖАНИЕ РАЗДЕЛ I. БИЗНЕССТАТИСТИКА..6 Глава 1. Предмет и метод статистики.6 Статистика как наука и отрасль практической д...
18015. Бренд. Боевая машина бизнеса 930 KB
  Глядя на засилье логотипов в окружающем нас пространстве — на стойке бара, на форменной одежде официантки, на посуде, столах и зонтиках, обозревая весь этот марочный мир, один из нас сделал зачин
18016. ЦЕНЫ И ЦЕНООБРАЗОВАНИЕ. Учебник 1.75 MB
  ЦЕНЫ И ЦЕНООБРАЗОВАНИЕ Учебник И.К. Салимжанова СОДЕРЖАНИЕ: [1] РАЗДЕЛ 1 [1.1] ОСНОВНЫЕ ВОПРОСЫ ЦЕНООБРАЗОВАНИЯ ПРИ ПЕРЕХОДЕ К РЫНКУ [2] ГЛАВА 1 [2.1] ЦЕНА КАК ЭКОНОМИЧЕСКАЯ КАТЕГОРИЯ В ПЕРЕХОДНЫЙ ПЕРИОД [2.1.1] Стоимо...
18017. Чистильщики московских улиц: скинхеды, СМИ и общественное мнение 556 KB
  В. А. Шнирельман Чистильщики московских улиц: скинхеды СМИ и общественное мнение Работа выполнена по проекту Анализ распространенных стереотипов в молодежной среде выработка и реализация мер по преодолению влияния их негативного аспекта в рамках среднеср
18018. Что такое политическая философия: размышления и соображения 595 KB
  Александр Моисеевич Пятигорский Что такое политическая философия: размышления и соображения Аннотация К чему приводит общее снижение уровня политической рефлексии Например к появлению новых бессмысленных слов: урегулирование политического кризиса ведь к...
18019. Деньги и Кредит 2.59 MB
  Деньги и Кредит СОДЕРЖАНИЕ: РАЗДЕЛ. ДЕНЬГИ Глава. НЕОБХОДИМОСТЬ ДЕНЕГ ИХ ВОЗНИКНОВЕНИЕ И СУЩНОСТЬ. Предпосылки и значение появления денег. Сущность денег. ФУНКЦИИ ВИДЫ ДЕН
18020. Деньги, кредит, банки 2.17 MB
  Кравцовa Г.И. Деньги кредит банки Содержание ПредисловиеРаздел I. ДЕНЬГИГлава 1. Необходимость и сущность денегКонцепции происхождения денег. Сущность денегВиды денегТеории денегГлава 2. Функции денегДеньги как мера стоимостиДеньги как средство обращенияДеньги к...
18021. Директ-маркетинг. Учебное пособие 2.3 MB
  И. В. Есинова С. В. Бачило Мишина Л.А. Директмаркетинг Глава 1. Директмаркетинг как инструмент маркетинга Директмаркетинг представляет собой вид рыночной деятельности в которой проявляется особый интерес к индивидуальным запросам потребителя и его лично
18022. ЭКОНОМИЧЕСКИЙ РИСК И МЕТОДЫ ЕГО ИЗМЕРЕНИЯ 376.5 KB
  Конспект лекций по дисциплине Экономический риск и методы его измерения 1 Оценка риска деятельности предприятия 1.1 Суть и виды рисков. 1.2 Методы анализа рисков. 1.3 Способы снижения риска самостоятельная проработка 1.4 Учет рисков при финансировании проект