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, буде знищено обидва рядки.

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


 

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

22365. Расширенная комплексная плоскость 2.74 MB
  непрерывны функции и то ее графиком является некоторая кривая на комплексной плоскости. Тогда говорят что задана непрерывная кривая или просто кривая: 1 а уравнение 1 называют параметрическим уравнением этой кривой. Пусть кривая задана уравнением 1. вопервых кривая является упорядоченным множеством точек вовторых различным точкам кривой может отвечать одна и та же точка плоскости: если t = t при tt то точки z= t и z=t...
22366. Понятие сходящегося и расходящегося ряда 227.5 KB
  Понятие сходящегося и расходящегося ряда. Рассмотрим бесконечный ряд: 1 все члены ряда комплексные числа образуем ∑ первых n членов этого ряда: 2 Давая n значения 123 мы получим бесконечную последовательность комплексных чисел S1S2Snсоответствующего ряда 1 . Обратно зная последовательность чисел Sn легко написать соответствующий ей ряд: S1S2S1SnSn1 Говорят что ряд 1 сходится если соответствующая ему последовательность чисел Sn сходится в этом случае суммой ряда 1 называют предел указанной...
22367. Функции комплексной переменной 202.5 KB
  Областью на комплексной плоскости называют множество D точек обладающее следующими свойствами: Вместе с каждой точкой из D этому множеству принадлежит и достаточно малый круг с центром в этой точке свойство открытости. Простыми примерами областей могут служить окрестности точек на комплексной плоскости. Говорят что на множестве M точек плоскости z задана функция w=fz 1 если указан закон по которому каждой точке zM...
22368. Схемы включения и характеристики биполярных транзисторов 465.5 KB
  Схемы включения БТ. Эквивалентные схемы БТ. Эквивалентные схемы БТ. Схемы включения БТ и их показатели.
22369. УСИЛИТЕЛИ НА БИПОЛЯРНЫХ ТРАНЗИСТОРАХ (БТ) 442 KB
  Характеристики схемы: статические и динамические. Простейшая модель работы транзистора рис. Надо помнить что для всех БТ Рис. Поэтому при проектировании схем надо стремиться к тому чтобы ее характеристики не зависели от величины β.
22370. Основные параметры каскада с ОЭ с последовательной ООС по току 663.5 KB
  Схема усилителя с общим эмиттером. Схема усилителя с общим коллектором. Схема усилителя с общей базой. Осциллограммы напряжений схемы с общим эмиттером с последовательной ООС по току Это схема каскада с последовательной ООС по току.
22371. Режимы работы усилительных устройств 626.5 KB
  Рабочую точку выбирают в середине проходной динамической характеристики каскада рис. Рис. Характеристики и сигналы в усилителе работающем в режиме А Режим используют в предварительных каскадах усиления. Рабочую точку задаем в начале проходной характеристики рис.
22372. Усилители постоянного тока (УПТ) 209.5 KB
  Благодаря этому при входных сигналах равных нулю достигается баланс моста напряжения на коллекторах обоих транзисторов равны и выходное напряжение снимаемое с диагонали Uвых = Uвых 1 Uвых 2 = 0. Uвх1 = Uвх2 = 0 Uвых = Uк1 Uк2 = 0. Ек1 Iк1 Iк2 Rк2 Rк1 Uвых 1 Uвых Uвых 2 ...
22373. Неинвертирующее и инвертирующее включение ОУ 368 KB
  На практике UСМ лежит в пределах от нескольких микровольт до десятков милливольт; максимальное выходное напряжение UВЫХ.МАКС Различают максимальное положительное напряжение UВЫХ.МАКС и максимальное отрицательное напряжение UВЫХ. Напряжения UВЫХ.