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


Мұраға алынған(inherited) конструктор



бет46/105
Дата09.08.2020
өлшемі0,51 Mb.
#76246
түріЛекция
1   ...   42   43   44   45   46   47   48   49   ...   105
Мұраға алынған(inherited) конструктор қалай шақырылады?

Ол VMT ӛрісіне аталық-класс VMT-ң сілтемесін жазып қою керек еді ғой. Жауап мынадай:



  1. егер конструктор объект экземплярын кӛрсетумен(соның ішінде, басқа бір тәсілдің ішінде Self-ке қатысты немесе Self-ті кӛрсетпей-ақ) шақырылатын болса, онда ол объект экземплярының VMT ӛрісін инициализация жасағанда объект экземплярының адресі жазылған айнымалының қандай типте жарияланғандығын басшылыққа алады.

  2. Егер конструктор мұраға алынған сияқты шақырылатын болса(басқа бір тәсілдің ішінен inherited қызметші сӛзі не аталық-класс атауы кӛрсетіліп), онда ол VMT ӛрісінинициализация жасамайды, қарапайым инициализация тәсілі секілді жұмыс істейді(дәлірегі, ол логикалық мән қайтарады, бұл туралы кейінірек тоқталамыз).

Бірінші ережеден келіп шығатын салдар. Егер мұраға алынған және қайта анықталмаған конструктор ұрпақ экземплярына қатысты шақырылса, онда VMT ӛрісі әрекетті орындаушы-объектті білдіретін айнымалы типіне сәйкес инициализация жасалынады, яғни оған ұрпақ VMT-ң кӛрсеткіші коррект жазылатын болады.

VMT кӛрсеткішін инициализациялау кодын шақыру компилятор арқылы конструкторды шақыру кезінде қосымша ӛз-ӛзінен қойылады, яғни ол конструктор кодының бір бӛлігі боп табылмайды. Дәл осыған байланысты мұраға алынған конструктор (аталықтың экземплярына қатысты шақырылып тұрып) VMT кӛрсеткішін аталықтың экземплярында дұрыс инициализация жасайды.



Рекомендация. Программаның қауіпті болу мүмкін аймақтарын тудырмау үшін басқа тәсіл конструкторларын шақырмаған дұрыс. Алайда, берілген класста мұраға алынған және қайта анықталған конструкторды осы конструктордың жаңа реализациясынан шақыруға болады.

Ішкі класста қайтаанықталу кезінде мұраға алынған конструктор конструктордың жаңа реализациясы денесінде әдетте, ең басында шақырылады.





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




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

    Басты бет