C++ tilidagi do'st sinfi
Bundan tashqari, kalit so'z yordamida C++ da do'st sinfidan foydalanishimiz mumkin friend. Masalan,
class ClassB;
class ClassA {
// ClassB is a friend class of ClassA
friend class ClassB;
... .. ...
}
class ClassB {
... .. ...
}
Agar sinf do'st sinf deb e'lon qilingan bo'lsa, do'st sinfining barcha a'zo funktsiyalari do'st funksiyalariga aylanadi.
Do'st sinf bo'lgani uchun biz barcha a'zolarga ichkaridan ClassBkira olamiz .ClassAClassB
ClassBBiroq, biz a'zolariga ichkaridan kira olmaymiz ClassA. Buning sababi, C++ da do'stlik munosabatlari faqat berilgan, olinmaydi.
Sinf obʻyekti uchun dinamik xotira ajratish
Xotiranitaqsimlovchilarvaulargaqo‘yilgantalablar.Dinamikxoti
rabilanishlashdamaxsustruklarni, fragmentlardanfoydalanishbo‘lmasa,
ko‘piginaalgoritmlardanfoydalanishsamarasizbo‘lshimumkin.
Bungamisolsifatidaikkitaholatniko‘ribchiqamiz. new va delete
operatorlariningqaytaaniqlanibyuklanishidasintaktikkonstruktorlarkichik
roqbo‘ladivadasturlokalizatsiyaqilishoddiybo‘ladi.
Shuningdekprotsessordagiamallartizimidahamqaytaaniqlashsodirbo‘ladi.
Avvalo, xotiraniishlashinitezlashtirishdaaqlli allocator
qanchalikfoydasiborliginianiqlashlozim.
Buninguchunoddiytestmisollarini (C++vaS#) tillaridako‘ribchiqaylik (
buxotirabilanishlashuchunyaxshimenejerhisoblanadivaob’ektlarniavlodl
argaajratadi,turlio‘lchamdagiob’ektlaruchunturlipullardan (joylar)
foydalanadi).
Pulob’ektlari. Pulob’ektlariuchunaniqechim -
OSdankattaxotirablokiniolishvaunitengbloklio‘lchamlargabo‘lishdir
sizeof(node).
Xotiraniajratishdabloknipuldanolinadivaunibo‘shatishdaunipulgaqaytaril
adi. Pulnitashkilqilishningengosonusuli - bittaaloqastekni (stack)
ishlatishdir.
Maqsaddasturdaminimalqaytaaniqlashlarbo‘lganiuchun,
BlockAlloc sinfnimerosxo‘risifatida Node sinfinitanlashdir.
class Node : public BlockAlloc
Do'stlaringiz bilan baham: |