Hva er forskjellen mellom virtuell funksjon og funksjonsoverstyring?
Hva er forskjellen mellom virtuell funksjon og funksjonsoverstyring?

Video: Hva er forskjellen mellom virtuell funksjon og funksjonsoverstyring?

Video: Hva er forskjellen mellom virtuell funksjon og funksjonsoverstyring?
Video: Video 559 Forskjellen mellom / forskjell på 2024, November
Anonim

Virtuelle funksjoner kan ikke være statisk og kan heller ikke være en venn funksjon av en annen klasse. De er alltid definert i basisklasse og overstyrt i avledet klasse. Det er ikke obligatorisk for avledet klasse å overstyring (eller omdefiner virtuell funksjon ), i så fall basisklasseversjon av funksjon benyttes.

Videre, hva er forskjellen mellom virtuell funksjon og ren virtuell funksjon?

Hoved forskjell mellom ' virtuell funksjon' og 'ren virtuell funksjon ' er det ' virtuell funksjon ' har sin definisjon i basisklassen og også de arvende avledede klassene omdefinerer den. De ren virtuell funksjon har ingen definisjon i basisklassen, og alle de arvende avledede klassene må omdefinere den.

Spørsmålet er deretter, hva er funksjonsoverstyring i C++? C++ funksjon overstyring . Hvis avledet klasse definerer det samme funksjon som definert i sin basisklasse, er det kjent som funksjon overstyring i C++. Det brukes til å oppnå runtime polymorfisme. Det lar deg gi spesifikk implementering av funksjon som allerede er levert av basisklassen.

På samme måte spør folk, hvorfor bruker vi virtuelle funksjoner?

Virtuelle funksjoner er brukt for å støtte "Run time Polymorphism". Når virtuell funksjon kalles ved å bruke en Base Class Pointer, bestemmer kompilatoren ved Runtime hvilken versjon av funksjon dvs. Base Class-versjonen eller den overstyrte Derived Class-versjonen skal kalles. Dette kalles Runtime Polymorphism.

Kan du overstyre en ikke-virtuell funksjon i C++?

I c++, alle klassemedlemmene funksjoner er ikke - virtuell som standard. De kan bli laget virtuell ved å bruke virtuell nøkkelord i funksjon signatur. Som nevnt over hvis de funksjon av grunnklasse er laget virtuell og så funksjon av avledet eller barneklasse funksjon med samme navn kan overstyre baseklassens funksjon.

Anbefalt: