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


Синф аъзоларини динамик тақсимланувчи соҳада жойлаштирилиши



Download 1,05 Mb.
bet64/86
Sana25.04.2022
Hajmi1,05 Mb.
#580284
1   ...   60   61   62   63   64   65   66   67   ...   86
Bog'liq
C qo`llanma

Синф аъзоларини динамик тақсимланувчи соҳада жойлаштирилиши.


Синф аъзолари динамик тақсимланувчи соҳада жойлаштирилган объектларга кўрсаткичлар ҳам бўлиши мумкин. Бундай ҳолатларда бу объектлар учун хотирадан жой ёки конструктор, ёки синфнинг бошқа бир методлари орқали ажратилади. Қоида бўйича объект банд этган хотира соҳасини бўшатиш шу объектнинг деструкторини чақириш орқали амалга оширилади. (8.7. – листинг)


8.7. – листинг. Кўрсаткичлар синф аъзолари сифатида.

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

  2. //Синф аъзоларига кўрсаткичлар

  3. # include

  4. class SimpleCat

  5. {

  6. public:

  7. SimpleCat( );

  8. ~SimpleCat( );

  9. int GetAge( ) const { return *itsAge;}

  10. void SetAge(int age) { * itsYosh= age }

  11. int GetWeight ( int weight){ return * itsWeight; }

  12. void SetWeight (int weight){ *itsOgirlik= weight }

  13. private:

  14. int * itsAge;

  15. int * itsWeight;

  16. }

  17. SimpleCat::SimpleCat( )

  18. {

  19. itsYosh= new int(2);

  20. itsOgirlik= new int(5);

  21. }

  22. SimpleCat::~SimpleCat( )

  23. {

  24. delete itsAge;

  25. delete itsWeight;

  26. }

  27. int main( )

  28. {

  29. SimpleCat* Frisky = new SimpleCat;

  30. cout<<“Frisky”<GetAge()<<“years old\n”;

  31. Frisky -> SetAge(5);

  32. cout<<“Frisky”<GetAge()<<“years old\n”;

  33. delete Frisky;

  34. return 0;

  35. }

НАТИЖА:
Frisky 2 years old


Frisky 5 years old

ТАҲЛИЛ
2 та ўзгарувчи – аъзоси int типига кўрсаткич бўлган синф эълон қилдик. Синф конструкторида (17 – 21 – сатрлар) бу ўзгарувчиларни сақлаш учун жой ажратилди ва уларга бошланғич қиймат берилди. Ўзгарувчи – аъзо учун ажратилган хотира деструктор орқали бўшатилди (22 – 26 – сатрлар). Хотира бўшатилиши билан деструкторлар томонидан кўрсаткичларга нол қиймат ўзлаштирилиш ҳеч қандай маънога эга эмас, чунки кўрсаткич тегишли бўлган объектнинг ўзи ҳам ўчирилаяпти. Бундай ситуация хотира бўшатилгандан кейин кўрсаткичга ҳеч қандай қиймат ўзлаштирмаса бўладиган бир ҳолдир.


Синф аъзоларига мурожаат қилувчи функция (жорий мисолда main() функцияси) бажарилишида, сиз унинг қандай мурожаат қилишини билмаслигингиз ҳам мумкин. Сиз фақатгина синфнинг мос методлари (GetAge() ва SetAge() ) ларни чақирдингиз, хотира билан бошқа операциялар синфнинг ички механизми орқали бажарилди. Frisky объектини ўчиришда SimpleCat синфининг деструктори чақирилди (40–сатр). Деструкторда синф аъзолари томонидан белгиланган хотира бўшатилди. Агарда синфнинг бирор бир аъзоси фойдаланувчи томонидан аниқланган бошқа бир синфнинг экземпляри бўлса, у ҳолда бу синфнинг ҳам деструкторини чақириш зарурияти туғилади.
Албатта жорий мисолимиз учун ўзгарувчи – аъзоларни динамик хотирага жойлаштириш унчалик шарт эмас. Лекин реал дастурларда маълумотларни бундай кўринишда сақлаш услуби анча самарали усул ҳисобланади. Бунинг учун эса ечилиши керак бўлган масалани аниқ қўйилиши ғоятда муҳимдир. Ихтиёрий дастур лойиҳалаштиришдан бошланиши сизга маълум. Масалан, ўзгарувчи аъзоси иккинчи синфнинг объекти бўлган биринчи синфни ҳосил қилиш керак бўлсин. Бунда иккинчи синфнинг объекти биринчи синф объекти ҳосил қилингунча мавжуд эди ва у ўчирилгандан кейин ҳам йўқолмаслиги керак. Бундай ҳолларда албатта иккинчи объектга мурожаат кўрсаткич орқали амалга оширилиши лозим.
Масалан, биринчи объект ойна иккинчиси эса хужжат бўлсин. Маълумки, ойна орқали албатта хужжатга мурожаат бўлиши лозим. Бошқа томондан, ҳужжатнинг мавжудлик даври ойна томонидан ҳам бошқарилмайди. Шунинг учун ойна бу объектга кўрсаткич орқали мурожаат қилиши лозим.
Бундай ҳолларда кўрсаткич ўрнига ҳавола номли ўзгарувчи ҳам ишлатилади. ҳавола ҳақида 9 – мавзуда батафсил танишамиз.



Download 1,05 Mb.

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




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish