Тилига кириш услубий қўлланма


Хотиранинг объектлар ўртасида динамик тақсимланувчи соҳасига обьектларни жойлаштириш


Download 0.87 Mb.
bet64/88
Sana18.03.2023
Hajmi0.87 Mb.
#1282045
1   ...   60   61   62   63   64   65   66   67   ...   88
Bog'liq
C o\'rganish uchun yaxshi

Хотиранинг объектлар ўртасида динамик тақсимланувчи соҳасига обьектларни жойлаштириш.


Худди бутун типли ўзгарувчини динамик хотирага жойлаштириш сингари ихтиёрий обьектни ҳам объектлар ўртасида динамик тақсимланувчи соҳалда жойлаштиришимиз мумкин. Масалан, агар сиз Cat синфи обьектини ҳосил қилиб, бу обьектни ўзгартириш учун унинг адресини ўзида сақловчи кўрсаткич тузишингиз мумкин. Бу ҳолат ўзгарувчини стекка жойлаштиришга ўхшаб қолади. Бу операцияни синтаксиси худди бутун сонли ўзгарувчи учун бўлганидек қуйидагичадир:
Cat * pCat= new Cat.
Бу ҳолатда new оператори синфни бошланғич конструкторини, яъни параметрсиз конструкторини чақиради. Объектни тузишда у стекда ёки динамик хотира соҳасида жойлаштирилишидан қатъий назар доимо у тегишли синф конструктори чақирилади.


Объектни динамик тақсимланувчи хотирадан ўчириш.


delete оператори ишлатилганда автоматик тарзда ундан кейин ёзилган кўрсаткичда адреси сақланувчи объект тегишли синф деструктори чақирилади. Қоида бўйича синф деструктори объектнинг динамик хотира соҳасида эгаллаган барча хотира соҳасини бўшатади. Объектни динамик хотирага жойлаштириш ва ўчиришга оид мисол 8.5- листингда кўрсатилган.
8.5. – листинг. Динамик хотира соҳасига объектларни жойлаштириш ва уларни ўчиришга оид мисол.

  1. // 8.5. – листинг.

  2. // Динамик тақсимланувчи соҳада объектларни

  3. //жойлаштириш ва ўчириш

  4. # inсlude


  5. class SimpleCat

  6. {

  7. public:

  8. SimpleCat();

  9. ~SimpleCat();

  10. private:

  11. int itsAge;

  12. }


  13. SimpleCat:: SimpleCat( )

  14. {

  15. cout<< “Contructor called .\n ”;

  16. itsYosh= 1;

  17. }

  18. SimpleCat:: ~ SimpleCat( )

  19. {

  20. cout <<”Destructor called .\n”;

  21. }

  22. int main()

  23. {

  24. cout << “Simple Cat Fricky… \n”;

  25. SimpleCat Frisky;

  26. cout << “SimpleCat *pRags = new SimpleCat… \n”;

  27. SimpleCat* pRags = new SimpleCat;

  28. cout<< “delete pRags… \n”;

  29. delete pRags

  30. cout<< “Exiting, watch Fricky go … \n”;

  31. return 0;

  32. }

НАТИЖА
SimpleCat Frisky…


Constructor called.
Simple Cat*pRags = new Simple Cat…
Construсtor called
delete pRags…
Destructor called
Exiting, wath Frisky go …
Destructor called.
ТАҲЛИЛ
6 – 13 – сатрларда оддий SimpleCat синфининг тавсифи берилган. Синф конструкторининг тавсифи 9 – сатрда, унинг танасининг тавсифи эса 15 – 19 – сатрларда берилган. Деструктор эса 10 – сатрда, унинг танаси эса 21 – 24 – сатрларда тавсифланган.
29 – сатрда бу синфнинг стекда жойлашувчи экземпляри тузилади. Бунинг учун SimpleCat синфининг конструктори ошкормас тарзда чақирилади. Синфининг иккинчи объекти 31 – сатрда тузилади. Бу ҳолда ҳам конструктор чақирилади. SimpleCat cинфининг деструктори 33 – сатрда pRags кўрсаткичи учун delete оператори қўлланилиши натижаси сифатида чақирилади. Функциядан чиқиш вақтида Frisky ўзгарувчиси кўриниш соҳаси чегарасидан чиқади ва унинг учун ҳам деструктор чақирилади.

Download 0.87 Mb.

Do'stlaringiz bilan baham:
1   ...   60   61   62   63   64   65   66   67   ...   88




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling