Նույնիսկ մեր ծրագրում այն ի վիճակի չէ գործարկել վերջնականացման մեթոդը բոլոր 3 շղթաների համար: «Այս մեթոդը էապես անապահով է Այն կարող է հանգեցնել այն բանին, որ վերջնականացուցիչները կանչվեն կենդանի օբյեկտների վրա, մինչդեռ մյուս շղթաները միաժամանակ շահարկում են այդ օբյեկտները, ինչը հանգեցնում է անկանոն վարքագծի կամ փակուղու::
Ինչու՞ պետք է խուսափել վերջնականացման մեթոդից C:
Օբյեկտի Finalize մեթոդը չպետք է կանչի մեթոդ այլ օբյեկտների վրա, բացի իր հիմնական դասից: Դա պայմանավորված է նրանով, որ մյուս կանչվող օբյեկտները կարող են հավաքվել միաժամանակ կանչող օբյեկտի հետ, ինչպես օրինակ ընդհանուր լեզվի գործարկման ժամանակի անջատման դեպքում:
Պե՞տք է անտեսենք Finalize մեթոդը:
finailze մեթոդը պետք է վերացվի, որպեսզի օբյեկտը ներառի մաքրման կոդը կամ ոչնչացնի համակարգի ռեսուրսները, որոնք պետք է արվեն նախքան օբյեկտի աղբը հավաքելը:
Ի՞նչ կպատահի, եթե բացառությունը կատարվի Finalize մեթոդով:
Եթե չբռնված բացառությունը գցվում է վերջնականացման մեթոդով, բացառությունն անտեսվում է, և այդ օբյեկտի վերջնականացումն ավարտվում է: … Վերջնականացման մեթոդով արված ցանկացած բացառություն հանգեցնում է այս օբյեկտի վերջնականացման դադարեցմանը, սակայն այլ կերպ անտեսվում է:
Ո՞րն է վերջնականացման մեթոդի նպատակը:
Օբյեկտ դասի վերջնականացման մեթոդը մեթոդ է, որը Աղբի հավաքիչը միշտ կանչում է աղբի հավաքման համար պիտանի օբյեկտը ջնջելուց/ոչնչացնելուց անմիջապես առաջ՝ մաքրման գործողություն իրականացնելու համար.