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

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


 

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

63889. Социокультурная статика и социокультурная динамика 41.5 KB
  Статика и динамика культуры это понятия отражающие состояния покоя неизменности культуры и те изменения которые происходят в культуре во взаимодействии различных культур. Традиции существуют во всех формах духовной культуры. Благодаря им развивается общество так как молодое поколение усваивает достигнутый...
63890. Социальные стереотипы в трансформационном аспекте 46.5 KB
  Социальные стереотипы в трансформационном аспекте XXI век век развития информационных технологий инноваций всего человечества. Стереотипы это предубеждения людей определенные клише которые создавались на протяжении многих лет...
63891. О необходимости формирования профессиональных ориентаций школьников 42 KB
  Выбор профессии профессионального учебного заведения для многих является не просто задачей. Согласно полученным данным большинство опрошенных школьников 52 не имеют четких представлений о своей будущей профессии: 30 не определились 22 затруднились ответить.
63892. Социальные смыслы деятельности 31.24 KB
  Во все времена любая деятельность человека социокультурная в том числе имела широкое влияние на процессы происходящие в обществе. Но что же такое деятельность Под деятельностью понимают специфический способ активного взаимодействия с окружающим миром процесс...
63893. Неформальный социальный контроль 37.5 KB
  В научной литературе существует такой тип социального контроля как неформальный. Данный тип социального контроля является основанным на одобрении или же в зависимости от поступка осуждении друзей знакомых родственников учителей коллег и других социальных групп.
63894. Арт-менеджмент и управление социокультурным образовательным пространством 83 KB
  В современной политической и социально-экономической ситуации формируются новые культурологические подходы к системе менеджмента качества социокультурного процесса и обеспечения конкурентоспособности специалистов художественного профиля...
63895. АНАЛИЗ ФИНАНСОВОГО СОСТОЯНИЯ И ФИНАНСОВОЙ УСТОЙЧИВОСТИ ООО «ИНАВТОСЕРВИС» 453.5 KB
  Финансовое состояние предприятия на момент исследования; тенденции и закономерности в развитии предприятия за исследуемый период; «узкие» места, отрицательно влияющие на финансовое состояние предприятия; резервы, которые предприятие может использовать для улучшения финансового состояния.
63896. Анализ феномена психопатологии на современном этапе развития общества 26.96 KB
  В некоторых вопросах современная медицина в лице психологии и психотерапии с их технологическими нововведениями признают свое бессилие говоря о том что душа человека как и ее свойства нормальные и патологические до конца не изучены. Утверждают что человеческое сознание формируется в результате исторического развития...
63897. Институт детства – что дальше? 36.5 KB
  Если сравнить прошлое и настоящее, детей современности и детей прошлого, детей XX века и детей начала XXI века, то мы заметим многие интересные черты. Предположим, что дети прошлого воспитывались в достаточно традиционной культуре...