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

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


 

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

52458. We and the English-speaking world. Comparing cultures 139.5 KB
  Guests: investors from Germny representtives of school dminist rtion correspondents from locl mss medi techers of the lyceum. Im gld to introduce you our guests from Germny Peter Freundlieb nd Julius Zitsek. nd I hope our guests from Germny will help us wont they The guests introduce themselves nd tell some words bout their country nd their mission in Ukrine. I think they will explin us the reson: boy nd girl worn in ntionl Ukrinin costumes hnd in the Germn guests bred nd slt on the ntionl Ukrinin towel nd spek bout Ukrinin...
52459. CYBERBULLYING 102 KB
  Techer: Good fternoon der pupils nd our guests We re hppy to greet you t our prty devoted to Interntionl Dy for Tolernce nd problems of cyberbullying. Presenter 1: Tody were going to tlk bout bullying. Bullying occurs in every country round the globe when people especilly children ren't tolernt of ech other.
52461. ВІТАННЯ ВІД СВІТЛОФОРЧИКА 53.5 KB
  Учителька бабуся. Учителька бабуся. Ура Учителька бабуся. О а навіщо нам ці правила Що ми шофери чи що Учителька бабуся.
52462. Дальтон-технологія 109 KB
  Серед інноваційних технологій яка саме дозволяє здійснити такий підхід до навчання відома дальтонтехнологія. Дальтонтехнологія один із методів активізації пізнавальної та креативної діяльності учнів при вивченні предмету. У дальтонтехнології закладені великі можливості для реалізації особистісноорієнтованого навчання в повнішій мірі навіть в умовах класноурочної системи.
52463. Галицько- Волинська держава. Данило Галицький 110.78 KB
  Мета: ознайомити учнів з виникненням Галицько Волинської держави; на прикладах особистостей Романа Великого та Данила Галицького продовжити формування вмінь складати характеристику видатних історичних діячів; виховувати почуття гордості за славне минуле свого народу повагу до історичних діячів. Обладнання: підручник карта Галицько Волинська держава портрети Романа і Данила зошит Власова роздатковий матеріал схеми таблиці вислови речення. ' Основні поняття і терміни: Галицько Волинська...
52464. American Holidays. Thanksgiving Day 338 KB
  The pilgrims celebrted the first Thnksgiving Dy in the fll of 1621. The pilgrims siled to meric from Plymouth Englnd in September 1620. Wht joy the pilgrims hd when they relized where they were There were people living in meric before the pilgrims rrived. The pilgrims first winter in the New World ws difficult.