Виртуалдык функция менен функцияны жокко чыгаруунун ортосунда кандай айырма бар?
Виртуалдык функция менен функцияны жокко чыгаруунун ортосунда кандай айырма бар?

Video: Виртуалдык функция менен функцияны жокко чыгаруунун ортосунда кандай айырма бар?

Video: Виртуалдык функция менен функцияны жокко чыгаруунун ортосунда кандай айырма бар?
Video: Post COVID-19 Autonomic Dysfunction 2024, Май
Anonim

Виртуалдык функциялар статикалык болушу мүмкүн эмес, ошондой эле дос боло албайт функция башка класстын. Алар ар дайым базалык класста аныкталат жана жокко чыгарылган туунду класста. Бул туунду класс үчүн милдеттүү эмес жокко чыгаруу (же кайра аныктаңыз виртуалдык функция ), бул учурда базалык класстын версиясы функция колдонулат.

Андан тышкары, виртуалдык функция менен таза виртуалдык функциянын ортосунда кандай айырма бар?

негизги ортосундагы айырма ' виртуалдык функция' жана 'таза виртуалдык функция 'булбу' виртуалдык функция ' деген аныктамасы бар ичинде базалык класс жана ошондой эле тукум кууп өткөн туунду класстар аны кайра аныктайт. The таза виртуалдык функция аныктамасы жок ичинде базалык класс жана бардык тукум кууп өткөн туунду класстар аны кайра аныкташы керек.

Кийинчерээк, суроо туулат, C++ тилинде функцияны жокко чыгаруу деген эмне? C++ Function Overriding . Эгерде туунду класс бирдей аныктайт функция анын базалык классында аныкталгандай, ал катары белгилүү функцияны жокко чыгаруу C++ тилинде. Бул иштөө убактысынын полиморфизмине жетүү үчүн колдонулат. Бул конкреттүү ишке ашырууну камсыз кылууга мүмкүндүк берет функция анын базалык классы тарабынан берилген.

Ошо сыяктуу эле, адамдар эмне үчүн виртуалдык функцияларды колдонобуз?

Виртуалдык функциялар болуп саналат колдонулган "Иш убактысынын полиморфизмин" колдоо. Качан виртуалдык функция Базалык Класс Көрсөткүчүн колдонуу менен чакырылса, Компилятор Runtime'дын кайсы версиясын чечет функция б.а. Базалык класстын версиясы же жокко чыгарылган Туунду класстын версиясы чакырылышы керек. Бул Run time Polymorphism деп аталат.

C++ тилинде виртуалдык эмес функцияны жокко чыгара аласызбы?

c++ тилинде класстын бардык мүчөсү функциялары болуп саналат жок - виртуалдык демейки боюнча. Алар болот жасалат виртуалдык колдонуу менен виртуалдык ичиндеги ачкыч сөз функция кол коюу. Жогоруда айтылгандай эгерде the функция базалык класс жасалган виртуалдык анда функция Туунду же Балдар классынын функция ошол эле ат менен жокко чыгара алат базалык класстын функция.

Сунушталууда: