Funksiyasi kabi, get funksiyasi
Bazaviy sinf konstruktorini chaqirish
Download 446.14 Kb.
|
Dasturlash Yakuniy javoblari (2)
Bazaviy sinf konstruktorini chaqirish (KengSinf(parametrlar): BazaviySinf());
Konteynervauniqo‘llanilishi.Xotiradako‘phollardamerosxo‘rob’e ktlarinisaqlovchisinflarvujudgakeladi. Ularning xotiradan o‘chirilishi bazaviysinf bilan bog‘liqdir. Masalan, Sinf bo‘lsin vatugun ichidagi matndan olingan mo‘rosxo‘rlari Node va Attribu Te hamda(char*) qatorlardan to‘ldirilgan. Yoki papkani qayta o‘qish va yana o‘zgartirishda, birmartayuklanadifaylmenejerifayllarvakataloglarro‘yxati. Yuqoridako‘rsatilgandek, new operatoriganisbattan delete operatorifoydalanishqiyinroqvamuammoliroqbo‘ladi. Bazaviysinfob’ektibilanbog‘liqkattablokdamerosxo‘rsinfob’ektlariuchun xotiraajratishkerak. Bazaviysinfob’ektiniyo‘qqilishpaytida, destruktorodatdagidek, merosxo‘rsinfuchunchaqiriladi, lekinxotiraniqaytarishingizshartemas — bukattablokdaozodqilinadi. PointerBumpAllocator sinfyaratamiz. Businfkattablokdanturlio‘lchamdagiqismlarnikesibtashlashvaeskisitugag ach, yangikattabloknitanlashgaimkonberadi. Nihoyat, new va delete operatorlaribilan childObject nituzamizvaberilgan allocator bilanmurojaatqilamiz: template struct ChildObject { static void* operator new(size_t s, A& allocator) { return allocator.AllocBlock(s); } static void* operator new(size_t s, A* allocator) { return allocator->AllocBlock(s); } static void operator delete(void*, size_t) { } static void operator delete(void*, A*) { } static void operator delete(void*, A&) { } private: static void* operator new(size_t s); }; Child sinfigao‘zgaruvchilarniqo‘shishuchunbarchaeʻlonlarni new operatoriorqaliamalgaoshirishkerakbo‘ladi. New operatoriquyidagichabo‘ladi. new (… parametrlar… ) ChildObject (…konstruktorparametrlari… ) QulaylikuchunA&va A* uchun new operatorlarniqo‘llaymiz. node = new(allocator) XmlNode(nodename); Agarallokatorajratuvchisifatidaqo‘shilsa, ikkinchisidanfoydalanishqulayroq: node = new(this) XmlNode(nodename); Bundantushinarlibo‘ladiki, ortiqchabelgilardanqochishdaamallarnibo‘lishuchunko‘rsatkichvahavolal arkonvertatsiyabo‘ladi. Ob’ektyaratishdaqaysi New operatoridanfoydalanganligigaqaramasdan, delete operatoriyordamidao‘chirishamalgaoshirilmaydi, kompilyatorningo‘zistandart delete operatoridanfoydalanadi. Download 446.14 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling