Aký je rozdiel medzi virtuálnou funkciou a prepísaním funkcie?
Aký je rozdiel medzi virtuálnou funkciou a prepísaním funkcie?

Video: Aký je rozdiel medzi virtuálnou funkciou a prepísaním funkcie?

Video: Aký je rozdiel medzi virtuálnou funkciou a prepísaním funkcie?
Video: Даниэл Уолперт: Для чего на самом деле нужен мозг 2024, Smieť
Anonim

Virtuálne funkcie nemôže byť statický a tiež nemôže byť priateľom funkciu inej triedy. Sú vždy definované v základnej triede a prepísané v odvodenej triede. Pre odvodenú triedu to nie je povinné prepísať (alebo predefinovať virtuálna funkcia ), v takom prípade verzia základnej triedy funkciu sa používa.

Ďalej, aký je rozdiel medzi virtuálnou funkciou a čistou virtuálnou funkciou?

Hlavný rozdiel medzi ' virtuálna funkcia“a „čistá virtuálna funkcia 'je to' virtuálna funkcia “má svoju definíciu v základná trieda a tiež zdedené odvodené triedy ju predefinujú. The čistá virtuálna funkcia nemá definíciu v základnú triedu a všetky zdedené odvodené triedy ju musia predefinovať.

Následne je otázkou, čo je funkcia prepisujúca v C++? Prepísanie funkcií C++ . Ak odvodená trieda definuje to isté funkciu ako je definované vo svojej základnej triede, je známe ako prepísanie funkcie v C++. Používa sa na dosiahnutie polymorfizmu za behu. Umožňuje vám poskytnúť špecifickú implementáciu funkciu ktorý už poskytuje jeho základná trieda.

Podobne sa ľudia pýtajú, prečo používame virtuálne funkcie?

Virtuálne funkcie sú použité na podporu „Polymorfizmu času behu“. Keď virtuálna funkcia sa volá pomocou ukazovateľa základnej triedy, kompilátor sa za behu rozhodne, ktorá verzia funkciu má sa volať verzia základnej triedy alebo prepísaná verzia odvodenej triedy. Toto sa nazýva Run time Polymorphism.

Môžete prepísať nevirtuálnu funkciu v C++?

V c++, všetci členovia triedy funkcie sú nie - virtuálne predvolene. Oni môcť vyrobené virtuálne pomocou virtuálne kľúčové slovo v funkciu podpis. Ako je uvedené vyššie ak a funkciu základnej triedy virtuálne potom funkciu odvodených alebo detských tried funkciu s rovnakým názvom môže prepísať základnej triedy funkciu.

Odporúča: