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

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


 

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

78938. Социологический и культурологический подходы к исследованию науки 25 KB
  Основные функции современного соц. сциентизма: социолог не определяет цели и их проблемы исследования, это результат руководства общества; так называемые руководители общества получают от социологов данные, рекомендации и прочие «орудия» технологического плана, которые они могут применять или нет в каждом нужном направлении; для выработки своих рекомендаций социологи должны полностью отказаться от фил. взглядов на общество.
78939. Традиционалистский и техногенный типы цивилизационного развития 25.5 KB
  Понятие цивилизации впервые возникло в 18 веке во Франции для обозначения общества в котором господствует свобода равенство и братство. Традиционные цивилизации. Техногенные цивилизации. Особенности техногенной цивилизации: Ориентация на совершенствование техники производства.
78940. Соотношение науки, философии, искусства, обыденного познения 36 KB
  Соотношение науки философии искусства обыденного познения. Проблема отличия науки от других форм познавательной деятельности это проблема демаркации т. 5 Для науки характерна постоянная методологическая рефлексия. Иногда можно выделить конденсат народной науки в виде заветов примет наставлений ритуалов и пр.
78941. Стратегии порождения научных знаний 29 KB
  Иными словами элементы предпосылки ростки будущей науки формировались в недрах другой духовной системы но они еще не выделялись из них как автономное самостоятельное целое. Действительно предпосылки науки создавались в древневосточных цивилизациях Египте Вавилоне Индии Китае Древней Греции в форме эмпирических знаний о природе и обществе в виде отдельных элементов зачатков астрономии этики логики математики и др. Постепенно складываются в самостоятельные отрасли знания астрономия механика физика химия и другие...
78942. Культура античного полиса и становление первых форм теоретической науки 31.5 KB
  Так в древнеегипетской цивилизации носителями знаний были жрецы в зависимости от уровня посвящения обладавшие той или иной суммой знаний. Знания существовали в религиозномистической форме и только жрецы могли читать священные книги и как носители практических знаний имели власть над людьми. Предпосылкой возникновения научных знаний многие исследователи истории науки считают миф. Особенности греческого мышления которое было рациональным теоретическим что в данном случае равносильно созерцательному наложили отпечаток на формирование...
78943. Развитие форм научного мышления в средние века 41 KB
  Но в это время существуют уже области знаний которые подготавливали возможность рождения науки. Каковы особенности интеллектуальной атмосферы Средневековья и кто являлся основными представителями средневековой науки Эпоху Средневековья относят к началу II в. Важными остаются вопросы о соотношении разума и веры науки и религии. К особенностям средневековой науки ученые причисляют ее ориентацию на совокупность правил в форме комментариев тенденцию к систематизации и классификации знаний.
78944. Формирование эмпирического метода исследования 26.5 KB
  Некоторый фрагмент действительности объективные события результаты относящиеся либо к объективной реальности факты действительности либо к сфере сознания и познания факты сознания. В научном познании факты играют двоякую роль: вопервых совокупность фактов образует эмпирическую основу для выдвижения гипотез и построения теорий; вовторых факты имеют решающее значение в подтверждении теорий если они соответствуют совокупности фактов или их опровержении если тут нет соответствия. При этом недопустимо выхватывать отдельные...
78945. Формирование рационал. метода исследования 30.5 KB
  Мышление осуществляющийся в ходе практики активный процесс обобщенного и опосредованного отражения действительности обеспечивающий раскрытие на основе чувственных данных ее закономерных связей и их выражение в системе абстракций понятий категорий и др. Человеческое мышление осуществляется в теснейшей связи с речью а его результаты фиксируются в языке как определенной знаковой системе которая может быть естественной или искусственной язык математики формальной логики химические формулы и т. Что такое мышление и каковы его основные...
78946. Общие проблемы структуры научного знания 26 KB
  С точки зрения взаимодействия объекта и субъекта научного познания последнее включает в себя четыре необходимых компонента в их единстве: а Субъект науки ключевой ее элемент: отдельный исследователь научное сообщество научный коллектив и т. в Система методов и приемов характерных для данной науки или научной дисциплины и обусловленных своеобразием их предметов. Выявление структуры науки в этом ее аспекте ставит проблему классификации наук. По предмету и методам познания выделяют науки о природе естествознание об обществе ...