Сайфиев ж. Ф. С++ тилига кириш услубий қўлланма
Синф аъзоларини динамик тақсимланувчи соҳада жойлаштирилиши
Download 3.45 Mb.
|
cpp buxoro
Синф аъзоларини динамик тақсимланувчи соҳада жойлаштирилиши.Синф аъзолари динамик тақсимланувчи соҳада жойлаштирилган объектларга кўрсаткичлар ҳам бўлиши мумкин. Бундай ҳолатларда бу объектлар учун хотирадан жой ёки конструктор, ёки синфнинг бошқа бир методлари орқали ажратилади. Қоида бўйича объект банд этган хотира соҳасини бўшатиш шу объектнинг деструкторини чақириш орқали амалга оширилади. (8.7. – листинг) 8.7. – листинг. Кўрсаткичлар синф аъзолари сифатида. //8.7. – листинг. //Синф аъзоларига кўрсаткичлар # include class SimpleCat { public: SimpleCat( ); ~SimpleCat( ); int GetAge( ) const { return *itsAge;} void SetAge(int age) { * itsYosh= age } int GetWeight ( int weight){ return * itsWeight; } void SetWeight (int weight){ *itsOgirlik= weight } private: int * itsAge; int * itsWeight; } SimpleCat::SimpleCat( ) { itsYosh= new int(2); itsOgirlik= new int(5); } SimpleCat::~SimpleCat( ) { delete itsAge; delete itsWeight; } int main( ) { SimpleCat* Frisky = new SimpleCat; cout<<“Frisky”< Frisky -> SetAge(5); cout<<“Frisky”< delete Frisky; return 0; } НАТИЖА:
Frisky 5 years old ТАҲЛИЛ
Синф аъзоларига мурожаат қилувчи функция (жорий мисолда main() функцияси) бажарилишида, сиз унинг қандай мурожаат қилишини билмаслигингиз ҳам мумкин. Сиз фақатгина синфнинг мос методлари (GetAge() ва SetAge() ) ларни чақирдингиз, хотира билан бошқа операциялар синфнинг ички механизми орқали бажарилди. Frisky объектини ўчиришда SimpleCat синфининг деструктори чақирилди (40–сатр). Деструкторда синф аъзолари томонидан белгиланган хотира бўшатилди. Агарда синфнинг бирор бир аъзоси фойдаланувчи томонидан аниқланган бошқа бир синфнинг экземпляри бўлса, у ҳолда бу синфнинг ҳам деструкторини чақириш зарурияти туғилади. Албатта жорий мисолимиз учун ўзгарувчи – аъзоларни динамик хотирага жойлаштириш унчалик шарт эмас. Лекин реал дастурларда маълумотларни бундай кўринишда сақлаш услуби анча самарали усул ҳисобланади. Бунинг учун эса ечилиши керак бўлган масалани аниқ қўйилиши ғоятда муҳимдир. Ихтиёрий дастур лойиҳалаштиришдан бошланиши сизга маълум. Масалан, ўзгарувчи аъзоси иккинчи синфнинг объекти бўлган биринчи синфни ҳосил қилиш керак бўлсин. Бунда иккинчи синфнинг объекти биринчи синф объекти ҳосил қилингунча мавжуд эди ва у ўчирилгандан кейин ҳам йўқолмаслиги керак. Бундай ҳолларда албатта иккинчи объектга мурожаат кўрсаткич орқали амалга оширилиши лозим. Масалан, биринчи объект ойна иккинчиси эса хужжат бўлсин. Маълумки, ойна орқали албатта хужжатга мурожаат бўлиши лозим. Бошқа томондан, ҳужжатнинг мавжудлик даври ойна томонидан ҳам бошқарилмайди. Шунинг учун ойна бу объектга кўрсаткич орқали мурожаат қилиши лозим. Бундай ҳолларда кўрсаткич ўрнига ҳавола номли ўзгарувчи ҳам ишлатилади. ҳавола ҳақида 9 – мавзуда батафсил танишамиз. Download 3.45 Mb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling