Cili është ndryshimi midis funksionit virtual dhe mbizotërimit të funksionit?
Cili është ndryshimi midis funksionit virtual dhe mbizotërimit të funksionit?

Video: Cili është ndryshimi midis funksionit virtual dhe mbizotërimit të funksionit?

Video: Cili është ndryshimi midis funksionit virtual dhe mbizotërimit të funksionit?
Video: The riddle of experience vs. memory | Daniel Kahneman 2024, Nëntor
Anonim

Funksionet virtuale nuk mund të jetë statik dhe gjithashtu nuk mund të jetë mik funksionin të një klase tjetër. Ato përcaktohen gjithmonë në klasën bazë dhe i tejkaluar në klasën e prejardhur. Nuk është e detyrueshme për klasën e prejardhur anashkaloj (ose ripërcaktoni funksion virtual ), në atë rast versioni i klasës bazë të funksionin përdoret.

Për më tepër, cili është ndryshimi midis funksionit virtual dhe funksionit të pastër virtual?

Kryesor dallimi ndërmjet ' funksioni virtual' dhe 'funksioni virtual i pastër ' eshte ajo ' funksion virtual ' ka përkufizimin e saj në klasa bazë dhe gjithashtu klasat e derivuara trashëguese e ripërcaktojnë atë. Të funksion i pastër virtual nuk ka përkufizim në klasa bazë, dhe të gjitha klasat e derivuara trashëguese duhet ta ripërcaktojnë atë.

Më pas, pyetja është, çfarë është funksioni mbizotërues në C++? Mbështetja e funksionit C++ . Nëse rrjedh klasa përcakton të njëjtën gjë funksionin siç përcaktohet në klasën e tij bazë, njihet si funksioni mbizotërues në C++. Përdoret për të arritur polimorfizmin e kohës së ekzekutimit. Kjo ju mundëson të siguroni zbatimin specifik të funksionin e cila tashmë ofrohet nga klasa e saj bazë.

Po kështu, njerëzit pyesin, pse i përdorim funksionet virtuale?

Funksionet virtuale janë të përdorura për të mbështetur "Polimorfizmin e kohës së ekzekutimit". Kur funksion virtual thirret duke përdorur një tregues të klasës bazë, përpiluesi vendos në kohën e ekzekutimit se cilin version të funksionin d.m.th., duhet të thirret versioni i klasës bazë ose versioni i klasës së derivuar të anashkaluar. Ky quhet polimorfizëm i kohës së ekzekutimit.

A mund të anashkaloni një funksion jo virtual në C++?

Në c++, të gjithë anëtarët e klasës funksione janë jo - Virtual sipas parazgjedhjes. Ata mund të bëhet Virtual duke përdorur Virtual fjalë kyçe në funksionin nënshkrim. Siç u tha më lart nëse të funksionin e klasës bazë është bërë Virtual pastaj funksionin e klasave të rrjedhura ose fëmijë funksionin me të njëjtin emër mund të anashkalojë të klasës bazë funksionin.

Recommended: