Увод у Деструктор у Ц ++

Као што сви знамо, Ц ++ је објектно оријентисан програмски језик и широко се користи у ИТ индустрији за развој софтвера, управљачких програма, уграђеног фирмвера и апликација клијент-сервер. То је језик средњег нивоа који обухвата карактеристике и језика високог и ниског нивоа. Има концепт класе и предмета. У Ц ++, конструктори играју важну улогу у стварању објекта и иницијализацији варијабли инстанци, али шта се догађа с тим објектима и ресурсима након што се они више не користе или се програм завршава? О овој одговорности се брину Деструктори у Ц ++. Деструктори се користе за уништавање објеката које су створили Конструктори када им више нису потребни да би се ослободила меморија. Они су посебне функције чланова и аутоматски их зову Ц ++. преводилац за ослобађање меморије ако у програму нема деструктора који је дефинисан од стране корисника. Попут конструктора, деструктори такође имају исти назив као и класа којој претходи знак тилде (~). Али деструктор не прихвата никакве аргументе / параметре и не враћа ништа, тј. Немају повратни тип.

Деструктори се никада не могу преоптеретити као конструктори у разреду. Испод су дате неке ситуације у којима компајлер аутоматски назива деструктор:

  • Када се позове оператер брисања.
  • Када се заврши извршавање програма.
  • Када се блок / опсег локалних променљивих заврши.

Програмер може дефинирати деструктор познат као конструктор дизајниран од корисника. Деструктор се може декларирати као виртуални или чисти виртуални, али не може бити проглашен цонст, волатиле, цонст волатиле или статички.

Како Деструцтор ради у Ц ++?

За рад деструктора потребно је имати на уму наведене тачке:

  • Деструктори класа објеката се прво зову пре него што позову деструктора чланова и базе. Деструктори не-виртуалне основне класе називају се пред деструкторима виртуалне основне класе.
  • Пре основне класе позива се деструктор нестатичких чланова. Деструктори и виртуалне и не виртуелне основне класе позивају се обрнутим редослиједом њихове декларације.
  • Имплицитни деструктори аутоматски се позивају помоћу компајлера Ц ++ када објект изађе из обима или се извршавање програма прекине за вањске и статичке објекте у програму. Деструктори се позивају да униште објекте створене новом кључном речју.
  • У случају имплицитних и кориснички дефинираних деструктора, преводилац прво извршава тијело деструктора, а затим позива деструкторе свих нестатичких класа не-варијанте, а затим позива деструкторе не-виртуалних и виртуалних основних класа обрнутим редослиједом од њихова конструкција.

Синтакса деструктора

Деструкторима у Ц ++ претходи знак тилде (~). Испод је наведена основна синтакса деструктора:

Синтакса:

Class class_name()
(


public:
class_name(); // Constructor
~class_name(); // destructor
)
)

У синтакси, 'цласс_наме' је назив класе, а у главној методи су дефинисани и конструктор и деструктор с истим именом класе. Деструктор нема никакве параметре нити повратни тип.

Примери Деструктора у Ц ++

Испод је пример Деструктора у Ц ++:

Пример # 1: Програм са корисничким дефинираним деструктором

Шифра:

#include
using namespace std;
class Example1( //class
public:
Example1()( // constructor cout << “Hello I am inside a constructor” << endl;
)
~Example1()( //destructor
cout << “Hello I am inside a destructor” << endl;
)
void display()
(
cout << “Hello this is a display method” << endl
)
);
int main()
(
Example1 ex; //object created
ex.display(); // display method called return 0;
)

Излаз:

У горњем примеру, 'Екампле1' је име класе, а 'ек' је објект креиран из те класе. Прво, позива се конструктор, па се штампа текст написан у конструктору, затим се метода приказа назива ана, на крају се деструктор позива након што се изврши целокупно извршавање програма.

Пример # 2: Програм са виртуелним деструктором

Шифра:

#include
using namespace std;
class b1 ( //base class
public:
b1() // constructor of base class
(
cout << “Hello this is base constructor” << endl;
)
~virtual b1() // destructor of base class
(
cout << “Hello this is base destructor” << endl;
)
);
class b2: public b1( // derived class of base class (b1) public:
b2() //constructor of derived cass
(
cout << “Hello this is derived constructor” << endl;
)
~ b2() // destructor of derived class
(
cout << “Hello this is derived destructor” << endl;
)
);
int main(void) //main method
(
b2 *der = new b2();
b1 *bas = der;
delete der;
getchar();
return 0;
)

Излаз:

Добра пракса је да деструктор основне класе постане виртуелни, јер се на тај начин осигурава да се објект изведене класе правилно уништи. Кад год се користи виртуелна класа, треба одмах додати виртуелни деструктор да спречи будуће неочекиване резултате.

Предности Деструктора у Ц ++

  • Даје коначну шансу за чишћење ресурса који се не користе за ослобађање меморије заузете некоришћеним објектима попут брисања динамичких објеката, затварања системских ручица, коришћених датотека.
  • Због пуно ресурса који заузимају простор и не користе се у рачунару, деструктор увек долази са добром сликом за смањење шансе за истицање меморије уништавањем тих неискориштених ствари.
  • Иако Ц ++ има механизам скупљања смећа, али аутоматско позивање деструктора без обзира на то да ли га програмер назове или не да ослободи простор, спречава корисника у многим најгорим ситуацијама у будућности.

Бодови који треба сажети о Деструктору

  • Деструктори се користе за уништавање неискориштених ресурса класе.
  • Деструктори имају исто име као и назив класе који претходи знаку (~).
  • За разлику од конструктора, не може бити ниједан параметар деструктора.
  • Нема повратног типа деструктора.
  • Ако корисник не дефинира деструктор сам у програму, преводилац аутоматски конструира један деструктор за њега.
  • У једној класи не може бити више од једног деструктора.

Закључак

Горњи опис деструктора јасно дефинише употребу и примену деструктора у Ц ++ програму. Иако концепт деструктора није сложен, ипак је веома важно разумети пре примене у програм, јер неправилна употреба деструктора може довести до неочекиваних резултата.

Препоручени чланак

Ово је водич за Деструцтор у Ц ++. Овде смо разговарали о Уводу у Деструктор у Ц ++ и раду Деструктора заједно са предностима. Можете и да прођете кроз друге наше предложене чланке да бисте сазнали више -

  1. Деструктор на Јави (примери)
  2. Увод у превладавање у Ц ++
  3. Обрасци у Ц ++ (примери)
  4. Врсте конструктора у Ц ++
  5. Деструктор у Питхон-у (синтакса, примери)

Категорија: