C ++

C ++ virtuaalne funktsioon

C ++ virtuaalne funktsioon
Selles artiklis käsitleme virtuaalset funktsiooni C ++ programmeerimiskeeles. Käitusaja / dünaamilise polümorfismi saavutamiseks kasutatakse virtuaalset funktsiooni C ++ keeles. C-i virtuaalse funktsiooni mõiste mõistmiseks näeme mitmeid näiteid++.

Virtuaalne funktsioon on liikmefunktsioon, mis on määratletud põhiklassis / vanemklassis ja uuesti määratletud tuletatud klassis. Virtuaalfunktsioon võimaldab funktsiooni tuletatud klassi versiooni kutsumist viite või kursori abil baasklassi.

Vaatame mõningaid näiteid virtuaalse funktsiooni mõiste mõistmiseks.

Esimeses näites näeme mitte-virtuaalse funktsiooni käitumist ja siis teises näites selgitame virtuaalse funktsiooni käitumist.

Näide 1

Järgmises näite koodis on meil kaks klassi: põhiklass ja tuletatud klass.

Baasklassil on liikme funktsioon, st.e., kuva (). Tuletatud klass on päritud baasklassist ja määratles uuesti funktsiooni display ().

Seejärel oleme deklareerinud kursori baasklassi tüübile ja määranud tuletatud klassi objekti. Niisiis, kui kutsume funktsiooni display () baasklassi tüüpi osuti abil, siis kutsutakse põhiklassi funktsioon. Väljundit näete allpool.

Kuid sellistel juhtudel pakub C ++ võimalust tuletatud klassifunktsiooni kutsumiseks, kuulutades baasklassi funktsiooni virtuaalseks. Selle mõistmiseks näeme veel ühte näidet.

# kaasata
nimeruumi kasutamine std;
klass Base_Class

avalik:
tühine kuva ()

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

;
klass Tuletatud_klass: avalik alus_klass

avalik:
tühine kuva ()

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

Näide 2

Selles näites oleme määranud funktsiooni display () baasklassi virtuaalse funktsioonina. Ainus erinevus eelmisest programmist on see, et oleme lisanud baasklassi “void display ()” ette virtuaalse märksõna.

Kui näete väljundit, prindib see: "Olen tuletatud klassis", mis näitab, et tuletatud klassifunktsiooni kutsutakse.

Põhiklassi virtuaalne märksõna (virtuaalne funktsioon) vastutab selle eest, et objektile kutsutaks õige funktsioon.

# kaasata
nimeruumi kasutamine std;
klass Base_Class

avalik:
virtuaalne tühine kuva ()

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

;
klass Tuletatud_klass: avalik alus_klass

avalik:
tühine kuva ()

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

Näide 3

See on veel üks näide virtuaalsest funktsioonist. Nagu näete allpool olevas programmis, oleme määranud baasklassi, st.e., Loom. Tuletatud klassi on kaks: koer ja lehm. Oleme määranud funktsiooni eat () baasklassi virtuaalseks, s.t.e., Loom. Seejärel oleme mõlema tuletatud klassi - Koer ja Lehm - funktsiooni eat () uuesti määratlenud.  Funktsioonis main () on meil baasklassi kursor, s.t.e., Loom ja kinnitas seejärel tuletatud klassi Koer. Niisiis, kui kutsume funktsiooni eat () baasklassi kursori abil, võime kasutada funktsiooni eat () tuletatud klassi versiooni, st.e., funktsioon Koer klassist söö (). Sarnaselt saame lehma klassi objekti kinnitamisel kutsuda funktsiooni eat () tuletatud klassi versiooni, st.e., Lehmade klassi funktsioon eat (). Sellist käitumist näete selgelt allpool olevast väljundist. 

# kaasata
nimeruumi kasutamine std;
klassi loom

avalik:
virtuaalne tühjus sööma ()

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

;
klassi koer: avalik loom

avalik:
tühine sööma ()

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

;
klass Lehm: avalik loom

avalik:
tühine sööma ()

cout << "Cow - eat veg!" a_ptr = uus lehm ();
a_ptr-> sööma ();
tagastama 0;

Järeldus

Selles artiklis olen selgitanud virtuaalse funktsiooni mõistet C-s++. C ++ toetab erinevat tüüpi polümorfismi - staatilist polümorfismi ja dünaamilist polümorfismi. Virtuaalse funktsiooni abil saame saavutada käituse / dünaamilise polümorfismi. Selles artiklis oleme vaadelnud ainult virtuaalse funktsiooni kontseptsiooni ja seda, kuidas saavutada käituse polümorfismi. Virtuaalse funktsiooni selgitamiseks olen selgitanud kolme toimivat näidet.

Lahing Wesnothi eest 1.13.6 Areng vabastati
Lahing Wesnothi eest 1.13.6 ilmus eelmisel kuul, on 1-s kuues arendusversioon.13.x-seeria ja see pakub mitmeid täiustusi, eelkõige kasutajaliidese ja ...
League of Legendsi installimine Ubuntu 14-le.04
Kui olete League of Legends fänn, siis on see teile võimalus proovida League of Legendsit. Pange tähele, et LOL-i toetab PlayOnLinux, kui olete Linuxi...
Installige uusim OpenRA strateegiamäng Ubuntu Linuxi
OpenRA on tasuta / tasuta reaalajas strateegiamängumootor, mis loob uuesti Westwoodi varased mängud nagu klassikaline Command & Conquer: Red Alert. Ja...