Ren virtuell funksjon i C ++

Ren virtuell funksjon i C ++
En ren virtuell funksjon i programmeringsspråket C ++ er et kjent konsept i C ++ arv. Denne virtuelle funksjonen kan brukes i den abstrakte klassen. Det kan bare oppgis i den abstrakte klassen, og det kan ikke defineres. Erklæringsverdien for den rene virtuelle funksjonen er 0. Dermed implementeres denne artikkelen for å bestemme hvordan den rene virtuelle funksjonen kan angis i baseklassen og definert i den avledede klassen.

Merk: Operativsystemet som brukes i denne opplæringen er Ubuntu 20.04. Du kan bruke andre Linux -distros- eller Windows -systemer. G ++ -kompilatoren har blitt brukt til implementering av eksempler.

Eksempel 01

Vi begynner med et enkelt eksempel for å illustrere den generelle arbeid og strukturen til en ren virtuell funksjon i C ++ abstrakt klasse. Du må vite at en abstrakt klasse ikke opptar noe objekt, jeg.e., ikke instantiert. Vi kan imidlertid bruke pekere eller referanser til tilgang til denne klassen og dens funksjoner. Så opprett en ny C ++ -fil ved hjelp av "ta på”Spør og åpne den med en redaktør, for eksempel Nano Editor.

$ Touch Pure.CC
$ nano ren.CC

Hver C ++ -kode starter med inngangsutgangsstrømmen som er inkludert i den. Navnetområdet må erklæres etter det. En abstrakt klasse er initialisert ved navn “Parent”. Den inneholder en enkelt ren virtuell funksjonserklæring kalt “forestilling()”. Denne rene funksjonen er initialisert med 0. Den avledede klassen som heter “Barn”Har blitt initialisert. Denne barneklassen har fått tilgang til foreldreklassen mens du brukte den som grensesnitt. Barneklassen inneholder definisjonen av en show () -metode. Show () -metoden har vist litt tekst med “cout" klausul. Her kommer hovedmetoden (). Alt arbeidet skal starte herfra:

Ved starten av en Main () -metode, foreldreklassepekeren “*s" har blitt skapt. Ettersom foreldreklassen er abstrakt, kan vi ikke lage objektet. Barneklassen er initiert med objektet “c”. Pekeren “*s”Av foreldreklassen har fått tilgang til adressen til barneklasseobjekt”c”. Så pekeren “*s”Kaller den rene virtuelle funksjonen”forestilling()”Ved en referanse. Etter å ha lagret C ++ ren virtuell kode, kompilerer den med G ++ kompilatorpakken. Det er ikke funnet noen feil så langt. Etter å ha kjørt filen, har vi fått følgende utdata:

$ g ++ ren.CC
$ ./en.ute

Resultatet av denne illustrasjonen kan analyseres i det vedlagte bildet ovenfor.

Eksempel 02

La oss se på et annet eksempel på å bruke en ren virtuell funksjon i C++. Vi skal gjøre noen matematiske beregninger i den rene virtuelle metoden. Så begynn med å åpne den samme filen og endre den litt. Legg til overskriftspakken til input-output-strømmen og bruk også standard navneområdet i koden. Vi har erklært en abstrakt klasse som heter “Resultat”Etter navneområdet. Denne klassen inneholder en beskyttet heltallstype variabel som heter “poengsum”Pleide å få merker fra brukeren.

En enkel metode for offentlig type er definert i den abstrakte klassen som heter “GetScore ()”. “cout”Klausul i denne metoden krever at brukeren skriver inn noen poengsum. Funksjonene vil få merkene fra brukeren som inndata via "cin" klausul. Deretter den rene virtuelle funksjonen "prosentdel()”Erklæres til 0 her. Den avledede klassen “Status”Er definert for å få studentprosenten ved å få tilgang til foreldreklassen som et grensesnitt. Child -klassen "Status" inneholder definisjonen av en ren virtuell metode "prosentdel()" i det:

Den rene virtuelle funksjonsprosenten () beregner prosentandelen av studentmerker. Denne prosentandelen finnes ved hjelp av en prosentvis formel ved å bruke merkene til en student. Merkene er oppnådd av variabelen “poengsum”Å ha merker lagt inn av brukeren. Hovedfunksjonen () inneholder objektopprettelsen av barneklassen. Dette objektet brukes til å kalle getScore () -metoden for å skaffe merker fra brukeren. Det samme objektet brukes til å kalle prosentvis () -funksjonen for å beregne prosentandelen av merker som er lagt inn av brukeren.

La oss lagre koden først og avslutte filen ved å bruke "Ctrl+s”Og“Ctrl+s”, Henholdsvis.

Etter å ha kommet tilbake til terminalen, må du først sammenstille koden med G ++ kompilatorpakken. Etter det, kjør filen med "en.ute”Spørring. Det vil be deg om å oppgi merkene dine. Vi har lagt til tre forskjellige merker ved hver utførelse og fått tre forskjellige prosentandeler hver gang.

$ g ++ ren.CC
$ ./en.ute

Resultatet av denne illustrasjonen kan analyseres i det vedlagte bildet ovenfor.

Konklusjon

Til slutt har vi brukt eksemplene på å bruke en ren virtuell funksjon i C ++ abstrakt klasse. Vi har brukt abstrakte og avledede klasser for å illustrere begrepet ren virtuell funksjon. Basert på informasjonen som gis, tror vi at det vil være enkelt for deg å jobbe med rene virtuelle funksjoner fra nå av. Takk for at du har lest denne artikkelen, og vennligst sjekk ut de andre artiklene levert av Linuxhint.com.