Wat is het verschil tussen virtuele functie en functieoverheersing?
Wat is het verschil tussen virtuele functie en functieoverheersing?

Video: Wat is het verschil tussen virtuele functie en functieoverheersing?

Video: Wat is het verschil tussen virtuele functie en functieoverheersing?
Video: Virtual Function vs Pure Virtual Function|Difference between virtual and pure virtual function 2024, Mei
Anonim

Virtuele functies kan niet statisch zijn en kan ook geen vriend zijn functie van een andere klas. Ze worden altijd gedefinieerd in basisklasse en overschreven in afgeleide klasse. Het is niet verplicht voor afgeleide klasse om overschrijven (of herdefinieer de virtuele functie ), in dat geval basisklasseversie van functie is gebruikt.

Wat is bovendien het verschil tussen virtuele functie en pure virtuele functie?

de belangrijkste verschil tussen ' virtuele functie' en 'pure virtuele functie' ' is dat ' virtuele functie ' heeft zijn definitie' in de basisklasse en ook de ervende afgeleide klassen herdefiniëren het. De pure virtuele functie heeft geen definitie in de basisklasse, en alle overervende afgeleide klassen moeten deze opnieuw definiëren.

Vervolgens is de vraag, wat is functieoverheersend in C ++? C++ Functie Overschrijven . Als afgeleide klasse hetzelfde definieert functie zoals gedefinieerd in zijn basisklasse, staat het bekend als: functie overschrijven in C++. Het wordt gebruikt om runtime-polymorfisme te bereiken. Het stelt u in staat om specifieke implementatie van de functie die al wordt geleverd door de basisklasse.

Evenzo vragen mensen: waarom gebruiken we virtuele functies?

Virtuele functies zijn gebruikt om "Runtime Polymorphism" te ondersteunen. Wanneer de virtuele functie wordt aangeroepen met behulp van een Base Class Pointer, beslist de Compiler tijdens Runtime welke versie van de functie d.w.z. de versie van de basisklasse of de overschreven versie van de afgeleide klasse moet worden aangeroepen. Dit wordt runtime-polymorfisme genoemd.

Kun je een niet-virtuele functie in C++ overschrijven?

In c++, alle leden van de klas functies zijn niet - virtueel standaard. Zij kan gemaakt zijn virtueel met behulp van de virtueel trefwoord in de functie handtekening. Zoals hierboven vermeld indien de functie van basisklasse is gemaakt virtueel dan de functie van afgeleide of kindklassen functie met dezelfde naam kan overschrijven de basisklasse's functie.

Aanbevolen: