Mis vahe on virtuaalfunktsioonil ja funktsiooni tühistamisel?
Mis vahe on virtuaalfunktsioonil ja funktsiooni tühistamisel?

Video: Mis vahe on virtuaalfunktsioonil ja funktsiooni tühistamisel?

Video: Mis vahe on virtuaalfunktsioonil ja funktsiooni tühistamisel?
Video: Mis on sotsiaalse rehabilitatsiooni teenus ja kuidas seda saada? 2024, Mai
Anonim

Virtuaalsed funktsioonid ei saa olla staatiline ega ka sõber funktsiooni teisest klassist. Need on alati määratletud põhiklassis ja tühistatud tuletatud klassis. See ei ole tuletatud klassi jaoks kohustuslik alistama (või määratlege uuesti virtuaalne funktsioon ), sel juhul baasklassi versioon funktsiooni kasutatakse.

Veelgi enam, mis vahe on virtuaalse funktsiooni ja puhta virtuaalse funktsiooni vahel?

Peamine vahet ' virtuaalne funktsioon" ja "puhas virtuaalne funktsioon ' on see ' virtuaalne funktsioon " on oma määratlus aastal baasklass ja ka pärivad tuletatud klassid määratlevad selle uuesti. The puhas virtuaalne funktsioon puudub definitsioon aastal baasklass ja kõik pärivad tuletatud klassid peavad selle uuesti määratlema.

Seejärel tekib küsimus, mis on C++-i funktsioonide alistamine? C++ funktsiooni alistamine . Kui tuletatud klass määratleb sama funktsiooni nagu on määratletud selle põhiklassis, on see tuntud kui funktsiooni tühistamine keeles C++. Seda kasutatakse käitusaegse polümorfismi saavutamiseks. See võimaldab teil pakkuda konkreetset rakendust funktsiooni mille baasklass juba pakub.

Samamoodi küsivad inimesed, miks me kasutame virtuaalseid funktsioone?

Virtuaalsed funktsioonid on kasutatud "Käitamisaja polümorfismi" toetamiseks. Kui virtuaalne funktsioon kutsutakse välja baasklassi osuti abil, otsustab kompilaator käitusajal, milline versioon funktsiooni st kutsuda tuleb põhiklassi versioon või tühistatud tuletatud klassi versioon. Seda nimetatakse käitusaja polümorfismiks.

Kas saate C++ mittevirtuaalset funktsiooni alistada?

C++ puhul kõik klassiliige funktsioonid on mitte - virtuaalne vaikimisi. Nad saab teha virtuaalne kasutades virtuaalne märksõna funktsiooni allkiri. Nagu eespool öeldud kui a funktsiooni baasklassist tehakse virtuaalne siis funktsiooni tuletatud või lapseklassist funktsiooni sama nimega saab alistada baasklassi oma funktsiooni.

Soovitan: