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

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


 

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

80680. Экономико-статистическое прогнозирование 42 KB
  Методы различаются также по научной обоснованности и назначению. В большом многообразии методов многообразия можно выделить следующие их группы: методы экспертных оценок; методы экстраполяции; моделирование; нормативный метод; целевой метод. Методы экспертных оценок основан на использовании экспертной информации. Методы экстраполяции основываются на предположении о неизменности факторов определяющих развитие изучаемого объекта и заключается в распространении закономерностей развития объекта в прошлом на его будущее.
80681. Методы прогнозной экстраполяции 63 KB
  Цель такого прогноза показать к каким результатам можно прийти в будущем если двигаться к нему с той же скоростью или ускорением что и в прошлом. Прогноз определяет ожидаемые варианты экономического развития исходя из гипотезы что основные факторы и тенденции прошлого периода сохраняться на период прогноза или что можно обосновать и учесть направление их изменений. Для данной цели необходимо чтобы прогностическая модель имела достаточную точность или допустимо малую ошибку прогноза. Ошибка статистического прогноза будет меньше чем...
80682. АНАЛИЗ КАЧЕСТВА ПРОГНОЗОВ 54.5 KB
  Абсолютная ошибка прогноза которая может быть определена как разность между фактическим значением и прогнозом Среднее абсолютное значение ошибки: 3. Среднеквадратичная ошибка прогноза: Между средним абсолютным значением ошибки и существует связь. Поэтому абсолютная ошибка прогноза может быть выражена в относительно фактических значений показателя: А средняя относительная ошибка: Этот показатель используется при сравнении точности прогнозов разнородных объектов прогнозирования поскольку этот показатель характеризует относительную...
80683. ПРОГНОЗИРОВАНИЕ НАУЧНО-ТЕХНИЧЕСКИХ ПРОГРАММ 92.5 KB
  Методы прогнозирования ЦКП. ЦКП тесно связаны с программноцелевым планированием методам позволяющим увязывать цели заложенные в плане с ресурсами. Прогнозирование ЦКП находиться в тесном взаимодействии с программно целевым планированием предшествующим разработке. Оценка фона прогнозирования Прежде чем приступить к разработке прогноза ЦКП необходимо дать всестороннюю оценку экономического политического технического и т.
80684. ПРОГНОЗИРОВАНИЕ НАСЕЛЕНИЯ 91 KB
  Прогнозирование численности населения. Перспективные расчеты возрастнополовой структуры населения. Объектами демографического прогнозирования могут являться: рождаемость смертность миграционные процессы трудовые ресурсы отдельные контингенты населения.