C ++

C ++ virtuel funktion

C ++ virtuel funktion
I denne artikel skal vi diskutere den virtuelle funktion på programmeringssprog C ++. En virtuel funktion bruges i C ++ til at opnå runtime / dynamisk polymorfisme. Vi vil se flere eksempler for at forstå begrebet den virtuelle funktion i C++.

En virtuel funktion er en medlemsfunktion, der er defineret i basisklassen / forældreklassen og omdefineret i den afledte klasse. Virtuel funktion gør det muligt at kalde den afledte klasseversion af funktionen ved hjælp af referencen eller markøren til basisklassen.

Lad os se et par eksempler for at forstå begrebet virtuel funktion.

I det første eksempel vil vi se opførelsen af ​​den ikke-virtuelle funktion, og derefter i det andet eksempel vil vi forklare opførelsen af ​​en virtuel funktion.

Eksempel 1

I følgende eksempelkode har vi to klasser: basisklasse og afledt klasse.

Baseklassen har en medlemsfunktion, dvs.e., Skærm(). Den afledte klasse arves fra basisklassen og omdefinerede display () -funktionen.

Derefter har vi deklareret en markør til baseklassetypen og tildelt et objekt fra den afledte klasse. Så når vi kalder display () -funktionen ved hjælp af baseklassetypemarkøren, kaldes baseklassefunktionen. Du kan se output nedenfor.

Men i sådanne tilfælde giver C ++ en måde at kalde den afledte klassefunktion ved at erklære baseklassefunktionen som virtuel. Vi vil se et andet eksempel for at forstå dette.

#omfatte
ved hjælp af namespace std;
klasse Base_Class

offentlig:
ugyldig visning ()

cout << "I am in Base class" << endl;

;
klasse Derived_Class: offentlig Base_Class

offentlig:
ugyldig visning ()

cout << "I am in Derived class" returnere 0;

Eksempel 2

I dette eksempel har vi defineret display () -funktionen som en virtuel funktion i baseklassen. Den eneste forskel fra det forrige program er, at vi har tilføjet et virtuelt nøgleord foran "ugyldigt display ()" i basisklassen.

Nu, hvis du ser output, udskrives det, "Jeg er i afledt klasse", hvilket indikerer, at den afledte klassefunktion kaldes.

Det virtuelle nøgleord (virtuel funktion) i baseklassen er ansvarlig for at sikre, at den rigtige funktion kaldes til et objekt.

#omfatte
ved hjælp af namespace std;
klasse Base_Class

offentlig:
virtuel tom skærm ()

cout << "I am in Base class" << endl;

;
klasse Derived_Class: offentlig Base_Class

offentlig:
ugyldig visning ()

cout << "I am in Derived class" returnere 0;

Eksempel 3

Dette er et andet eksempel på en virtuel funktion. Som du kan se i nedenstående program, har vi defineret en basisklasse, dvs.e., Dyr. Der er to afledte klasser: Hund og ko. Vi har defineret spise () -funktionen som virtuel i basisklassen, dvs.e., Dyr. Vi har derefter omdefineret spise () -funktionen i både de afledte klasser, Hund og Ko.  I hovedfunktionen () har vi en markør i basisklassen, i.e., Animal, og vedhæftede derefter den afledte klasse, Dog. Så når vi kalder funktionen eat () ved hjælp af basisklassemarkøren, kan vi påberåbe den afledte klasseversion af eat () -funktionen, i.e., funktionen eat () fra hundeklassen. På samme måde, når vi vedhæfter objektet Cow-klasse, kan vi derefter påberåbe den afledte klasseversion af eat () -funktionen, dvs.e., funktionen eat () fra klassen Cow. Du kan tydeligt se denne adfærd i output nedenfor. 

#omfatte
ved hjælp af namespace std;
klasse Animal

offentlig:
virtuelt ugyldigt spise ()

cout << "Animal - base class - undefined eating behavior." << endl;

;
klasse Hund: offentligt dyr

offentlig:
ugyldigt spise ()

cout << "Dog - eat non-veg!" << endl;

;
klasse Ko: offentligt dyr

offentlig:
ugyldigt spise ()

cout << "Cow - eat veg!" a_ptr = ny ko ();
a_ptr-> spis ();
returnere 0;

Konklusion

I denne artikel har jeg forklaret begrebet virtuel funktion i C++. C ++ understøtter forskellige typer polymorfisme - statisk polymorfisme og dynamisk polymorfisme. Ved hjælp af en virtuel funktion kan vi opnå runtime / dynamisk polymorfisme. I denne artikel har vi kun set på begrebet virtuel funktion og hvordan man opnår runtime polymorfisme. Jeg har forklaret tre arbejdseksempler til forklaring af virtuel funktion.

Kæmp om Wesnoth-vejledning
Slaget om Wesnoth er et af de mest populære open source-strategispil, som du kan spille på dette tidspunkt. Ikke kun har dette spil været under udvikl...
0 A.D. Vejledning
Ud af de mange strategispil derude, 0 A.D. formår at skille sig ud som en omfattende titel og et meget dybt, taktisk spil på trods af at det er open s...
Unity3D Tutorial
Introduktion til Unity 3D Unity 3D er en kraftfuld spiludviklingsmotor. Det er cross platform, det er det giver dig mulighed for at oprette spil til m...