Reglerna för virtuell funktion?
Svar
En virtuell funktion måste deklareras som en icke-statisk medlem metod av en klass som du förväntar dig att agera som en basklass. Att förklara en virtuell funktion lägger till några omkostnader till följd av att skapa v-tabellen (virtuell metod tabell), men de flesta av den overhead betalas med funktionen första virtuella (efterföljande virtuella funktioner bara lägga till en ny post i redan befintliga v-tabellen). Dock inte deklarera en virtuell funktion om inte du förväntar dig att funktionen ska åsidosättas. Komma ihåg att åsidosätta en överbelastad, icke-virtuell funktion "döljer" alla överbelastning i basklassen.
Om en virtuell funktion måste åsidosättas, förklara det som ren-virtual i stället. Du behöver inte genomföra metoden i basklassen, men du kommer att bli påmind om att ge en implementering i härledda klassen vid kompileringen om det inte finns, även om du tillhandahåller en standard genomförandet i basklassen. Komma ihåg att basera klasser med en eller mer ren-virtuella metoder bli abstrakt - de kan inte instantieras.
Om det finns någon virtuell funktion eller ren-virtuell funktion, måste det också finnas en virtuella destructor, samt en offentlig eller skyddade standardkonstruktör (en konstruktor utan argument). När en härledd klass är konstruerat, anropas basklasskonstruktor, som appeller dess basklasskonstruktor. Härledda klasser är konstruerade i sekvens, börjar med den minst-härledd klassen. Förstörelsen är motsatsen - den mesta-härledd klassen som förstörs innan basklasser förstörs.
Virtuella funktioner kan anropas precis som någon annan klass medlem metod, både via en objektreferens medlem (.), och falskhet (-->) för tips på objekt. Det spelar ingen roll om det referensnummer eller pekaren refererar till en basklass eller en härledd klass; v-tabellen beslutar vilken omställning (där det finns någon) kommer att faktiskt utföra, start från de flesta-derived åsidosättningen och arbeta tillbaka mot basklassen, minst-derived. Med lämplig användning av virtuella funktioner, dynamisk gjutning kan undvikas helt (dynamisk gjutning bör aldrig användas som den helt nederlagen punkt om har en v-tabell i första hand).
Svaret 1. virtuella funktionen bör vara medlem av någon klass 2. de kan inte vara en statisk medlem
3. de hämtas med hjälp av objektet pekare
Relaterade Frågor
-
Dator vetenskap kursplanen av hsc maharashtra ombord?
-
Vilka är delarna av ett tangentbord och deras funktioner?
-
Vad är några roliga gratis virtuella sällskapsdjur webbplatser jag har redan en howrse anta mig lurviga tassar mara pet och neopets och nutrinopets?
-
Där kan du få gratis virtuella husdjur online utan att ladda ner?
-
Vad är nätverk funktioner virtualisering (NFV)?
-
Vad är android funktion?
-
Bilförsäkring - kan jag ha andra bra betyg funktioner? Vad menar du? Lady bonus?
-
Sabbatsår i offentlig tjänst, vilka är reglerna här?
-
Kommersiella köp av virtuella varor av enskilda personer, som shopping?
-
Den främsta utlåningsräntan har som uppgift och funktion?
-
Hur länge kan jag avboka en autogirering till de nya SEPA-reglerna?
-
Vilka är de nya reglerna för courtage kostnader?
-
Vad de nya reglerna för mer tillförlitlighet och stabilitet på finansmarknaderna?
-
Är inte motsatsen till funktion som faktiskt har en andel andel återköp?
-
Virtuella objekt Kontrollfråga
-
Skulle hjälpa waiver på Basel II-reglerna med nuvarande kreditkrisen?
-
Som kund har rätt att fungerande biljettautomaterna av Deutsche Bahn med EG funktion?
-
Finns det ett index till utvärderingen av virtuell mark i second life?
-
Är ett kreditkort med ytterligare en funktion någonsin vettigt?