«Қазақстан тарихы, жалпы білім беру пәндері және ақпараттық жүйелер» кафедрасы


Конструкторды корректсіз қолданудың мысалы



жүктеу 0,51 Mb.
бет47/105
Дата21.01.2022
өлшемі0,51 Mb.
#34296
түріЛекция
1   ...   43   44   45   46   47   48   49   50   ...   105
« аза стан тарихы, жалпы білім беру п ндері ж не а паратты ж йе

    Навигация по данной странице:
  • B^.Init
3. Конструкторды корректсіз қолданудың мысалы.

type TA = object

.........



constructor init; procedure Initialization;

.........



end; PA = ^TA;

TB = object(TA)

......... end; PB = ^TB;

procedure Initialization;

begin

Init; {конструкторды шақыру, Self.Init – рекомендацияға жат!}

........... end;

................ var B:PB;

................

new(B);


B^.Init; {мұраға алынған конструктор шақырылып тұр, бұлай етуге болады }

B^.Initialization; {VMT-ң көрсеткіші бұзылады!}

Келтіріліген мысалда TA классы және оның мұрагері TB жарияланған. TA классында конструктор жарияланған және осы конструктордың тәсілін ӛз ішіне алатын тәсіл жарияланған(бұлай етуге кеңес бермейміз). TB классында осы конструктор мен тәсіл мұраға алынған. B^.Init шақыруы мұраға алынған конструкторды дұрыс (коррект)шақыруға әкеледі. Бұған дейін компилятор B^ объектінің VMT ӛрісін инициализациялау кодын генерациялап қояды. Ӛйткені, адрестелетін В мәні TB типіне ие. Келесі B^.Initialization шақыруы мұраға алынған тәсілді шақыруға әкеледі, ал, оның ішінде конструктор қайтадан шақырылады. Осы тәсілдің ішінде конструкторды шақыру Self-ке қатысты орындалады, ал бұл Self осы тәсілдің контексінде TA типіне ие. Сондықтан, нәтижеде, Self ретінде берілген B^ объекті, қайта инициализацияланатын болады және оның VMT ӛрісіне ТА классының VMT адресі жазылады, ал бұл корректсіз(дұрыс емес).




жүктеу 0,51 Mb.

Достарыңызбен бөлісу:
1   ...   43   44   45   46   47   48   49   50   ...   105




©g.engime.org 2024
әкімшілігінің қараңыз

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау